2010-12-15 64 views
1

我正在C#4.0中開發應用程序。我需要根據當前系統時間調用一個方法。我可以使用定時器控制嗎?如果有人能告訴我如何做到這一點,那將會很棒。在C中使用Timer觸發動作#

謝謝, Rakesh。

回答

2

您可以使用下面的代碼

System.Timers.Timer _timer1 = new System.Timers.Timer(); 
_timer1.Elapsed += new ElapsedEventHandler(_timer1_Elapsed); 
//1 second 
_timer1.Interval = 1000; 
_timer1.Start(); 

//this event will be fired each 1 second 
private void _timer1_Elapsed(object sender, ElapsedEventArgs e) 
{ 
} 
1

你應該是可以的,是的。 Ghyath Serhal已經告訴你如何使用計時器課程。唯一缺少的是如何在特定的時間做到這一點。這應該是非常簡單的 - 當您設置計時器時,只需花時間讓您的操作發生和當前時間,即可在幾秒鐘內找到差異,並使用它來擴大時間間隔。您還需要將AutoReset屬性設置爲false,以便它不會立即再次開始倒計時。

如果您改變事件發生的時間,您只需要用觸發器將其掛鉤並將定時器更新爲新時間即可。

編輯補充:如果有人要改變系統時間,可能會導致這個計劃出現問題。我不確定您是否可以輕鬆地使用該功能重置定時器。我猜可能不相關。 :)

3

你可能(並不知道更多關於你的應用程序,我不能肯定地說)想看看它有點不同。您可以輕鬆編寫一個應用程序,除了輪詢什麼時間以外,什麼都不做,然後運行您需要做的任何事情,但這會讓您的應用程序停滯不前,無所事事,而是大部分時間都會佔用資源。

相反,也許你可以考慮創建一個計劃任務,它可以讓你在任何給定的時間運行你的應用程序。任務計劃程序記錄在http://msdn.microsoft.com/en-us/library/aa383614(VS.85).aspx處,並且在http://taskscheduler.codeplex.com/處有一個託管包裝程序。 (它說它可以在XP或更好的版本上運行,所以希望它能夠滿足你的需求)。

祝你好運,

1

與計時器的問題是,它並不能保證所經過的事件將恰好在正確的時間被稱爲 - 所有你知道的是,它會一次比大後調用間隔。 解決方案取決於您感興趣的時間的分辨率 - 例如,如果您需要檢查每個小步驟,如果發生特定事件,您可以設置一個計時器,以每小時提起事件,然後使用DateTime.Now來檢查如果系統時間是事件發生的時間。

一個好的策略是始終期望計時器已過時事件發生在Interval設置後幾秒發生,具體取決於系統的繁忙程度。