在我的previos question我問到舍入時間值到最近的第三分鐘。 那麼現在我有一些問題,我的System.Threading.Timer必須在第三分鐘時間到來時工作。我做如下:準確的三分鐘時間計時器間隔
private System.Timers.Timer WorkTimer;
//...
public void StartProccessing()
{
WorkTimer = new System.Timers.Timer();
WorkTimer.AutoReset = false;
WorkTimer.Elapsed += new ElapsedEventHandler(WorkTimer_Elapsed);
StartWorkTimer();
}
//...
private void StartWorkTimer()
{
WorkTimer.Interval = (CurrentTime.AddMinutes(3) - DateTime.Now).TotalMilliseconds;
WorkTimer.Start();
}
void WorkTimer_Elapsed(object sender, ElapsedEventArgs e)
{
WorkTimer.Stop();
this.ProcessData(this.CurrentTime);
StartWorkTimer();
}
問題是,當計時器開始 - 它不是在第一個三分鐘的時間的工作,它開始後第二,第三分鐘的時間工作。例如: 定時器在15.02.2012 12:20:32.871啓動,在15.02.2012 12:21:00.000啓動它必須工作WorkTimer_Elapsed,但它從15.02.2012 12:24:01.871開始。 如何解決這個問題? 我解決我的CURRENTTIME時間(從previos問題):
private DateTime CurrentTime
{
get
{
DateTime now = DateTime.Now.AddSeconds(30);
DateTime val;
val = new DateTime(now.Year, now.Month, now.Day, now.Hour, now.Minute, 0)
.AddMinutes(((now.Minute)/3) * 3 - now.Minute);
return val;
}
}
爲什麼你加30秒?刪除它應該會產生所需的結果。 – 2012-02-15 20:38:14
我添加30秒 - 查看我的previos問題http://stackoverflow.com/questions/9287819/getting-accurate-three-minute-time-values – amaranth 2012-02-16 06:18:05