C#中timer類的用法關於C#中timer類 在C#裡關於定時器類就有3個
1.定義在System.Windows.Forms裡
2.定義在System.Threading.Timer類裡
3.定義在System.Timers.Timer類裡
System.Windows.Forms.Timer是應用於WinForm中的,它是通過Windows訊息機制實現的,類似於VB或Delphi中的Timer控制項,內部使用API SetTimer實現的。它的主要缺點是計時不精確,而且必須有訊息迴圈,Console Application(控制台應用程式)無法使用。
System.Timers.Timer和System.Threading.Timer非常類似,它們是通過.NET Thread Pool實現的,輕量,計時精確,對應用程式、訊息沒有特別的要求。System.Timers.Timer還可以應用於WinForm,完全取代上面的Timer控制項。它們的缺點是不支援直接的拖放,需要手工編碼。
例:
使用System.Timers.Timer類
//執行個體化Timer類,設定間隔時間為10000毫秒;
System.Timers.Timer t = new System.Timers.Timer(10000);
//到達時間的時候執行事件;
t.Elapsed += new System.Timers.ElapsedEventHandler(theout);
t.AutoReset = true;//設定是執行一次(false)還是一直執行(true);
t.Enabled = true;//是否執行System.Timers.Timer.Elapsed事件;
====================================
自己寫的一個用System.Timer類的方法
public class BF_CheckUpdate
{
private static object LockObject = new Object();
// 定義資料檢查Timer
private static Timer CheckUpdatetimer = new Timer();
// 檢查更新鎖定
private static int CheckUpDateLock = 0;
///
/// 設定資料檢查Timer參數
///
internal static void GetTimerStart()
{
// 迴圈間隔時間(10分鐘)
CheckUpdatetimer.Interval = 600000;
// 允許Timer執行
CheckUpdatetimer.Enabled = true;
// 定義回調
CheckUpdatetimer.Elapsed += new ElapsedEventHandler(CheckUpdatetimer_Elapsed);
// 定義多次迴圈
CheckUpdatetimer.AutoReset = true;
}
///
/// timer事件
///
///
///
private static void CheckUpdatetimer_Elapsed(object sender, ElapsedEventArgs e)
{
// 加鎖檢查更新鎖定
lock (LockObject)
{
if (CheckUpDateLock == 0) CheckUpDateLock = 1;
else return;
}
//More code goes here.
//具體實現功能的方法
Check();
// 解鎖更新檢查鎖
lock (LockObject)
{
CheckUpDateLock = 0;
}
}
}