.NET多執行緒技術詳解(2) 建立、終止執行緒
System.Threading 名稱空間提供支援多執行緒程式設計的類和介面,使您可以輕鬆地執行建立和啟動新執行緒,同步多個執行緒,掛起執行緒以及中止執行緒等任務。
Thread類有幾個至關重要的方法,描述如下:Start():啟動執行緒;
Sleep(int):靜態方法,暫停當前執行緒指定的毫秒數;
Abort():通常使用該方法來終止一個執行緒;
Suspend():該方法並不終止未完成的執行緒,它僅僅掛起執行緒,以後還可恢復;
Resume():恢復被Suspend()方法掛起的執行緒的執行;
(1) 建立
若要在 C# 程式碼中合併執行緒處理,只需建立一個將在主執行緒外執行的函式,並讓一個新的 Thread
System.Threading.Thread newThread;
newThread = new System.Threading.Thread(anObject.AMethod); //建立執行緒例項newThread,其指向anObject物件的AMethod方法
newThread.Start();//啟動執行緒
下面以一個實際運用的例子介紹執行緒基本操作。此示例目的是將一個大規模的運算置於後臺進行。
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.Threading;
namespace ThreadStudyw
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
Thread t=new Thread(new ThreadStart(this.s));
t.Start();//如果不以輔助執行緒執行s函式,窗體將處於等待狀態,無法響應請求,待執行完成後方在標籤上顯示“結束了”
//而以輔助執行緒後臺執行,則直接執行顯示“結束了”
label1.Text = "結束了";
}
private void s()
{
for(int i=0;i<100000;i++)
for (int j = 0; j < 1000000; j++)
{
}
}
}
}
(2)終止
正常情況下,當函式執行完,輔助執行緒自動終止。
也可以呼叫Abort()方法,終止執行緒,該方法將引發ThreadAbortException異常。
但Abort 方法不直接導致執行緒中止,因為目標執行緒可捕捉 ThreadAbortException 並在 finally 塊中執行任意數量的程式碼。