Mega Code Archive

 
Categories / C# / Date Time
 

Return true if the number of seconds has elapsed since the last check

// crudwork // Copyright 2004 by Steve T. Pham (http://www.crudwork.com) // // This program is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by // the Free Software Foundation, either version 3 of the License, or // (at your option) any later version. // // This program is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the // GNU General Public License for more details. // // You should have received a copy of the GNU General Public License // along with This program.  If not, see <http://www.gnu.org/licenses/>. using System; using System.Collections.Generic; using System.Text; namespace crudwork.Utilities {   /// <summary>   /// Date Utility   /// </summary>   public class DateUtil   {     /// <summary>     /// create new instance with default attributes     /// </summary>     public DateUtil()     {     }     #region HasElapsed method     private DateTime? then = null;     /// <summary>     /// <para>return true if the number of seconds has elapsed since the last check; otherwise return false.</para>     /// <para>Use this method to raise a status report event to the GUI (for example, every 1 second) to prevent     /// clogging the message pump.</para>     /// </summary>     /// <param name="seconds">specify number of seconds to check</param>     /// <returns></returns>     public bool HasElapsed(double seconds)     {       return HasElapsed(seconds, true);     }     /// <summary>     /// <para>return true if the number of seconds has elapsed since the last check; otherwise return false.</para>     /// <para>Use this method to raise a status report event to the GUI (for example, every 1 second) to prevent     /// clogging the message pump.</para>     /// </summary>     /// <param name="seconds">specify number of seconds to check</param>     /// <param name="mark">set true to mark the time if time has elapsed; or set false to do a test only</param>     /// <returns></returns>     public bool HasElapsed(double seconds, bool mark)     {       var now = DateTime.Now;       if (!then.HasValue)       {         then = now;         return false;  // return false, because this is the very first check       }       if (then.Value.AddSeconds(seconds) >= now)         return false;  // the # of seconds has NOT elapsed...       // yes, it has. mark new time for next check       if (mark)         then = now;       return true;     }     #endregion   } }