定時器的最大時間間隔爲2,147,483,647。大約25天。但在我的要求中,我需要計時器將等待30天。我該如何解決它?請幫忙。最大定時器時間間隔
回答
爲此使用System.Threading.Timer
。有long
,uint
或TimeSpan
而不是int
dueTime
的構造方法。其中任何一項都會讓您設置30天的時間。
更新:這是做到這一點的最簡單的方法:
System.Threading.Timer _timer;
public void Start30DayTimer()
{
TimeSpan span = new TimeSpan(30, 0, 0, 0);
TimeSpan disablePeriodic = new TimeSpan(0, 0, 0, 0, -1);
_timer = new System.Threading.Timer(timer_TimerCallback, null,
span, disablePeriodic);
}
public void timer_TimerCallback(object state)
{
// do whatever needs to be done after 30 days
_timer.Dispose();
}
現在你只需要保持你的系統健康和快樂30天。 – 2009-10-26 13:58:02
@亨克:這個問題沒有提及*爲什麼*計時器的時間需要30天。對於我們所知道的,這個計時器可能會被用來發送電子郵件給某人說:「嘿,這臺服務器連續運行了30天」。 – MusiGenesis 2009-10-26 14:00:16
30天,是的。但最大值約爲49天,因爲即使使用int64或TimeSpan版本,它也不會接受超過2 * 32-2毫秒的值。 – RenniePet 2011-06-13 00:11:00
您可以隨時讓計時器等待較短的時間,如一天,計時器每次觸發計數器並檢查計數器的當前值。如果值爲30,則執行應該每30天運行一次的代碼。
更好的辦法是將值設置在某個外部文件的某個位置,以便如果程序意外退出,則可以恢復您離開的位置。理想情況下,您可能希望將下一個運行日期放在文件中,以便如果程序關閉多天,則可以恢復並在正確的日期觸發它,而不必擔心上次運行的時間。因此,像
NextRunDate = 2009/10/10 4:40 PM
當程序運行時它會設置提前的日期還有30天。
將日期時間變量設置爲日期時間,當您想要執行任何它時...然後,只需讓計時器檢查每分鐘(或任何您需要的準確度級別)以查看該日期時間是否已過去。 。
要做到這一點有一個計時器,你還需要一個應用程序,並且沒有中斷30+天運行的PC。並非不可能,但是風險很大。
這聽起來像你想要的東西安排執行。計算目標日期/時間並將其保存爲XML或.config文件。當應用程序重新啓動時,它可以重新計算用於觸發事件的TimeSpan。
這是計時器,告訴你你的應用程序更適合作爲計劃任務來實現。
計時器的構造函數將採用一個TimeSpan,它是int64肯定會超過25天?
您是否也考慮過系統可能無法保持30天?
只看了一眼,就是10,675,199天。
我強烈建議使用Windows Scheduled Task功能,尤其是如果這是爲了在每個月的同一天運行某些功能,因爲月份會在28到31天之間變化。
這不是問題的答案。如果您在給定時間(計劃程序)啓動應用程序,或者正在運行的應用程序在給定時間(計時器)正在執行某些操作,則這是完全不同的。 – 2012-03-28 10:12:44
Quartz.NET庫是定期運行代碼的另一種選擇。
- 1. 定時器得到間隔時間
- 2. 定時器間隔警報
- 3. Highcharts:設置固定時間間隔的最大滴答數
- 4. 多間隔時間設定
- 5. 在一定時間間隔
- 6. 指定SSRS時間間隔
- 7. 自定義時間間隔
- 8. C#定時器間隔每24小時
- 9. 時間間隔
- 10. 更改計時器的時間間隔
- 11. 計算最佳計時器間隔(timer_settime)
- 12. 如果最大時間戳大於其他最大時間戳
- 13. NSDateComponentsFormatter不支持大時間間隔
- 14. SQL - 最快的時間間隔查詢
- 15. 所有時間間隔的最大重疊數
- 16. 找到最大重疊間隔數的時間段
- 17. 查找最大併發進程數的時間間隔
- 18. LINQ查詢獲得最大時間間隔
- 19. 查找日期列表中最大的時間間隔
- 20. JPQL時間間隔
- 21. 的時間間隔
- 22. 時間戳間隔
- 23. NAN時間間隔
- 24. Fullcalendar時間間隔
- 25. 日期時間計時器時間間隔不會改變加
- 26. 在VB中設置隨機定時器時間間隔
- 27. C#中不同時間間隔的多個定時器.net
- 28. 定時器有兩個執行任務的時間間隔
- 29. 不同的定時器精度不同的時間間隔
- 30. 等待定時器,運行每個時間間隔?
哪個定時器? .NET中至少有3個不同的計時器! – 2009-10-26 13:29:15
System.Threading; – Wilson 2009-10-26 13:32:04
這不是一個錯誤的方式。一個錯誤是當你的代碼和你的規範不一致時。我想你會發現這是一個有據可查的限制。 – paxdiablo 2009-10-26 13:33:25