1. 程式人生 > >C#多執行緒實現定時器

C#多執行緒實現定時器

     我們在寫winfrom時經常會用到定時器,比如客戶端通過socket定時向伺服器傳送檢測包等。.netframework提供了一個定時器控制元件System.Windows.Forms.Timer,使用很方便。

     其實通過C#多執行緒也可以實現定時器功能。我的做法大致為:新開一個執行緒用於計時,當時間間隔過後用事件timerover實現主窗體中的定時函式,再通過呼叫contro.invoke方法返回主窗體執行緒執行定時後的操作。

     先定義兩個類,timer類用於管理和配置定時器,interval_date用於計算兩個時刻的間隔(例如2010年1月1日和2012年12月26日之間的毫秒),單位是毫秒,因此定時器的設定範圍理論上可以無限大。原理不多說,下面放程式碼:

timer類程式碼:

interval_date類程式碼:

最後是主窗體程式碼:

一個文字框兩個按鈕,按鈕一用來開啟定時器,按鈕二用來複位。

通過簡單的驗證,這種方法和.netframework提供的timer控制元件實現的定時誤差在個位數(毫秒),也可以嘗試用更精確的方法來測試一下。