背景
App需要開線程和定時器,本文對這兩種的通用方法做個記錄
正文
線程
- 添加命名空間
using System.Threading;
- 創建線程
//shutdownlazer()即是線程要執行的函數
Thread shutdownlazer_thread = new Thread(shutdownlazer);
- 開啟線程
//shutdownlazer_thread即為第 2 步獲取到的線程句柄
shutdownlazer_thread.Start();
- 關閉線程
線程不需要自己關閉,當shutdownlazer()函數運行完退出了,線程也就自然關閉了。當然,若是關閉主窗口,則線程一定要關閉,可在主窗口關閉事件中調用函數關閉所有線程,
// 窗口關閉,關閉所有線程
private void Mainwin_FormClosing(object sender, FormClosingEventArgs e)
{
System.Environment.Exit(0);
}
定時器
- 添加命名空間
using System.Timers;
- 實例化一個定時器
private static System.Timers.Timer RUtimer;
- 創建定時器並設定定時器參數
// 創建一個100ms定時的定時器
RUtimer = new System.Timers.Timer(100); // 參數單位為ms
// 定時時間到,處理函數為OnTimedUEvent(...)
RUtimer.Elapsed += OnTimedUEvent;
// 為true時,定時時間到會重新計時;為false則只定時一次
RUtimer.AutoReset = true;
// 使能定時器
RUtimer.Enabled = true;
// 開始計時
RUtimer.Start();
此處需要注意的是,當讓系統自動添加OnTimedUEvent(...)函數時,自動生成的函數如下,
void OnTimedUEvent(object sender, ElapsedEventArgs e)
{
throw new NotImplementedException();
}
throw new NotImplementedException();此句是為了提醒我們來實現該定時器的代碼,若不將該代碼注釋,則APP實際運行起來,定時器時間一到,就會在此處拋出異常。
4. 停止定時器
RUtimer.stop();
至此記錄完畢。
參考鏈接
記錄時間:2017-5-9
記錄地點:深圳WZ
