接續上一篇的主軸,在進步一點。
1.開啟專案後,加入
using System.Threading;
2.宣告執行緒相關變數,並載入參數與工作函數名稱
public Form1()
{
InitializeComponent();
THS = new ThreadStart(Date);
TH = new Thread(THS);
}
在此也可以加入:
TH.IsBackground = true;
使得這個執行緒以【背景執行緒】的模式執行
3.寫下你需要的工作,如下:
internal void Date()
{
Thread.BeginCriticalRegion();
for (; ; )
{
try
{
this.Invoke(new DNCallBack(DN), new object[] { DateTime.Now.ToString() });
}
catch (Exception)
{
break;
}
}
Thread.EndCriticalRegion();
}
internal delegate void DNCallBack(string Time);
internal void DN(string Time)
{
label1.Text = Time.ToString();
}
4.最後須要注意的就是啟動、暫停、恢復以及結束四個執行緒動作:
啟動【Start】、暫停【Suspend】、恢復【Resume】、結束【Abort】
在此提醒一點,使用Abort會產生ThreadAbortException的例外狀況,要記得使用Try、Catch攔截例外狀況,另外也可以在FormClosing事件也加上結束執行緒的程式,避免關掉視窗前沒有結束執行緒。
若是使用背景執行執行緒模式,則可以不用幫Abort使用Try、Catch,因為背景執行執行緒並不會防止執行緒終止,所以執行緒終止時,會順利的結束,而前景執行執行緒模式就剛好相反,除此一點外,前景、背景其實都相同。