class NewThread : MyThread
{
override public void run()
{
Console.WriteLine("使用MyThread建立並運行線程");
}
}
static void Main(string[] args)
{
NewThread nt = new NewThread();
nt.start();
}
我們還可以利用MyThread來為線程傳遞任意復雜的參數。詳細內 容見下節。
三、為線程傳遞參數
Thread類有一個帶參數的委托類 型的重載形式。這個委托的定義如下:
[ComVisibleAttribute (false)]
public delegate void ParameterizedThreadStart(Object obj)
這個Thread類的構造方法的定義如下:
public Thread(ParameterizedThreadStart start);
下面的代碼使用了這個帶參數的委托向線程傳遞一個字符串參數:
public static void myStaticParamThreadMethod(Object obj)
{
Console.WriteLine(obj);
}
static void Main(string[] args)
{
Thread thread = new Thread(myStaticParamThreadMethod);
thread.Start("通過委托的參數傳值");
}
要注意的是,如果使用的是不帶參數的委 托,不能使用帶參數的Start方法運行線程,否則系統會拋出異常。但使用帶參數 的委托,可以使用thread.Start()來運行線程,這時所傳遞的參數值為null。
也可以定義一個類來傳遞參數值,如下面的代碼如下:
class MyData
{
private String d1;
private int d2;
public MyData(String d1, int d2)
{
this.d1 = d1;
this.d2 = d2;
}
public void threadMethod()
{
Console.WriteLine(d1);
Console.WriteLine(d2);
}
}
MyData myData = new MyData("abcd",1234);
Thread thread = new Thread(myData.threadMethod);
thread.Start();