我在我的WPF應用程序中使用System.Timers.Timer。我想了解Timer在計算機休眠和睡眠後的表現如何。在計算機從休眠狀態恢復後,我的應用程序出現了一些奇怪的問題。System.Timers.Timer如何在WPF應用程序,Hibernate和Sleep之後運行?
我應該如何處理計時器以及計算機處於休眠/睡眠模式時的行爲?
我有一個午夜計時器應該在每個午夜工作以重置UI上的默認值。
下面是創建計時器代碼:
private void ResetMidnightTimer()
{
// kill the old timer
DisposeMidnightTimer();
_midnightTimer = new Timer();
// scheduling the timer to elapse 1 minute after midnight
_midnightTimer.Interval = (DateTime.Today.AddDays(1).AddMinutes(1) - DateTime.Now).TotalMilliseconds;
_midnightTimer.Elapsed += (_, __) => UpdateRecommendedCollectingTime();
_midnightTimer.Enabled = true;
_midnightTimer.Start();
}
在UI頁面的構造器,我把它稱之爲ResestMidnightTimer()方法,並創建定時器事實。之後,計時器只等了一晚。
當夜間時間(實際上是上午12:01)到來時,計時器工作,按預期重置默認值,然後處理現有計時器。最後它爲第二天創建一個新的午夜計時器。 但是,如果我在當天試圖休眠計算機,則午夜計時器將不起作用,並且不會重置默認值。
這是因爲在冬眠期間,它只是將事件處理推遲了相同的時間長度而使其處於休眠狀態?
你看到什麼問題(只是好奇)? – M4N
@ M4N我編輯了這個問題。 – User1234