コード例 #1
0
 /// <summary>
 /// Сброс задачи. После чего она будет готова к выполнению через заданный период.
 /// </summary>
 public void Reset()
 {
     ConditionalLock(() =>
     {
         Interlocked.Exchange(ref _executionsCount, 0);
         _startedTimeMSec = TimerJob.GetNowMSec();
     });
 }
コード例 #2
0
 /// <summary>
 /// Активация задачи. После чего она сразу готова к выполнению.
 /// </summary>
 public void Activate()
 {
     ConditionalLock(() =>
     {
         Interlocked.Exchange(ref _executionsCount, 0);
         _startedTimeMSec = TimerJob.GetNowMSec() - _periodMSec;
     });
 }
コード例 #3
0
        /// <summary>
        /// Возвращает время от текущего момента до следующего исполнения.
        /// </summary>
        /// <returns></returns>
        public long GetMSecToNextExecution()
        {
            long nextTime = 0;

            ConditionalLock(() =>
            {
                nextTime = _startedTimeMSec + (Interlocked.Read(ref _executionsCount) + 1) * _periodMSec;
            });

            return(nextTime - TimerJob.GetNowMSec());
        }