//Ожидание следующей обработки protected override void Waiting() { var timeout = (int)NextPeriodStart.Subtract(DateTime.Now).TotalMilliseconds; if (timeout > 0) { Thread.Sleep(timeout); } }
//Ожидание следующей обработки protected override void Waiting() { StartLog("Опредение диапазона источников").Run(GetSourcesTime); if (NextPeriodStart <= DateTime.Now) { _threadPeriodMode = "Выравнивание"; return; } var d = DateTime.Now; var dif = NextPeriodStart.Subtract(d).TotalSeconds; using (StartPeriod(ThreadPeriodBegin, ThreadPeriodEnd, _threadPeriodMode = "Синхронный")) using (StartProgress("Ожидание", "", "", NextPeriodStart)) while (d < NextPeriodStart) { if (CheckFinishing()) { return; } Procent = 100.0 * DateTime.Now.Subtract(d).TotalSeconds / dif; Thread.Sleep(1000); d = DateTime.Now; } }
//Определение первого периода protected override bool FirstPeriod() { ThreadPeriodEnd = ThreadPeriodBegin.AddSeconds(PeriodSeconds); NextPeriodStart = ThreadPeriodEnd.AddSeconds(LateSeconds); return(NextPeriodStart.Subtract(ThreadFinishTime).TotalSeconds < 0.0001); }