現在C#已經建議擯棄使用 Suspend, Resume 暫停/恢複線程, 也盡量少用 Abort方法中斷一個線程.
建議使用線程的同步手段有: 、、,
public Thread(ThreadStart start);
另一種是帶參數(ParameterizedThreadStart 委託) --
public Thread(ParameterizedThreadStart start);
ParameterizedThreadStart 委託簽名:
public delegate void ParameterizedThreadStart(Object obj);
樣本:
1. 不帶參數:
// 定義線程方法:
private static void ThreadMain()
{
Console.WriteLine("This is other thread main method.");
}
// 調用:
Thread mythread = new Thread(ThreadMain);
mythread.Start();
2. 帶參數:
// 定義線程方法:
private static void MainThreadWithParameters(object o)
{
Data d = (Data)o; //類型轉換
Console.WriteLine("Running in a thread, received {0}", d.Message);
}
public struct Data
{
public string Message;
}
// 調用:
var data = new Data { Message = "Info" };
Thread t2 = new Thread(MainThreadWithParameters);
t2.Start(data); // 傳入參數
3. 通過定義類傳遞參數:
// 定義存放資料和線程方法的類:
public class MyThread
{
private string message;
public MyThread(string data)
{
this.message = data;
}
public void ThreadMethod()
{
Console.WriteLine("Running in a thread, data: {0}", this.message);
}
}
// 調用
var obj = new MyThread("info");
Thread myThread = new Thread(obj.ThreadMethod); //ThreadStart 委託
mythread.Start();