一、基本概念與使用
1、System.Threading.Timer是什麼
System.Threading.Timer是用於在指定時間間隔內執行指定的代碼的類。它是System.Threading.Timer類的實例化,能夠讓你在你的應用程序中創建一個可以持續運行,直到你不需要它為止的周期性線程。
2、Timer的使用方法
Timer的使用需要以下3個參數:
private static Timer _timer;
_timer = new Timer(TimerMethod, null, 0, 3000);
第一個參數是一個TimerCallback委託類型的方法,用於指定要執行的代碼。第二個參數是一個object類型的參數,可選的,用於傳遞給指定的方法。第三個參數指定定時器的時間間隔,單位為毫秒。
在執行完以上代碼後,Timer就會定期執行TimerMethod方法。
二、Timer的構造函數詳解
1、TimerCallback委託
TimerCallback委託是指定在定時器觸發時要執行的方法。它有一個object類型的參數,可選的,該參數就是指定的參數。
public delegate void TimerCallback(object state);
2、stateObject和waitTime
Timer構造函數的第二個參數是stateObject,它通常是null,如果你想指定stateObject,請使用構造函數的另一個重載來實現。第三個參數waitTime是指定定時器首次觸發的時間間隔,單位為毫秒。
public Timer(TimerCallback callback, object state, int dueTime, int period);
3、dueTime和period
Timer的另一個重載構造函數需要指定dueTime和period參數,這個構造函數的意義是創建一個定時器,該定時器從當前時間開始計時,第一次到期時間是dueTime,以後每次的時間間隔是period。
public Timer(TimerCallback callback, object state, TimeSpan dueTime, TimeSpan period);
三、Timer執行方法的實現方式
1、使用TimerCallback委託
private void TimerMethod(object state)
{
// 執行代碼邏輯
}
2、使用Lambda表達式
_timer = new Timer(state => {
// 執行代碼邏輯
}, null, 0, 3000);
3、使用匿名方法
_timer = new Timer(delegate (object state) {
// 執行代碼邏輯
}, null, 0, 3000);
四、Timer取消與釋放
1、取消Timer
當你想要停止定時器時,需要調用Cancel()方法。
_timer.Cancel()
2、釋放Timer
釋放Timer需要調用Dispose()方法。
_timer.Dispose()
五、Timer的常用應用場景
1、重複執行一個任務
定時器可用於重複執行一項任務。例如,定時器可用於每隔5秒自動更新應用程序中的所有數據。
2、計時器
定時器還可用於創建計時器。例如,當用戶啟動數字遊戲時,定時器可用於記錄遊戲的時間。
3、輪詢特定資源
使用定時器可實現輪詢特定資源(如遠程伺服器是否可用),並在特定時間間隔內詢問資源狀態。
六、本文示例代碼
這裡為大家提供了一個簡單的Timer示例代碼,用於定期輸出當前系統時間:
private static Timer _timer;
static void Main(string[] args)
{
Console.WriteLine("Timer Start!");
_timer = new Timer(TimerMethod, null, 0, 3000); //每隔3秒鐘執行一次
Console.ReadLine();
}
private static void TimerMethod(object state)
{
Console.WriteLine("Current Time: {0}", DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"));
}
原創文章,作者:PBHM,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/149083.html