我目前在10秒間隔內使用System.Threading.Timer。每次定時器觸發時,我都會添加一小段代碼以寫入文件,而且大多數時候它會按時啓動,有時(大概在應用程序的其餘部分購買時),無法觸發30或40秒,然後連續發射一遍又一遍。計時器比System.Threading.Timer更可靠
是否有更可靠的計時器,我可以在.NET 3.5中使用?
定時器的設置如下
Timer someTimer = new Timer(new TimerCallback(SomeMethod), null, 0, 10000);
...和回調:
private static void SomeMethod(object state)
然而,這是難以提供更多的代碼比這個,作爲定時通常正確觸發。當它被嵌入到大量的應用程序中時(大約100,000行左右),多個線程被釋放,左,右和中間,你慢慢開始看到定時器間歇性地發射。 我見過幾篇帖子,提示ThreadPool可能已經用盡,所以我現在正在查看是否可能是我正在經歷的。
可以提供一些示例代碼而不是*假設*定時器不可靠嗎?我傾向於發現它是我自己的代碼,這是問題,而不是.NET框架。 –
定時器的設置如下: – JamesPD
如果處理tick時間超過10秒,則ThreadPool飢餓將很可能是這種情況。你會慢慢積壓物品。標準策略是在進入tick事件時停止定時器,並在最後再次啓動,以避免由於處理時間過長而導致「定時器泄漏」。 –