程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> 關於C語言 >> C#線程系列講座(2):Thread類的應用(3)

C#線程系列講座(2):Thread類的應用(3)

編輯:關於C語言
 以用下面的代碼來使用MyThread類。
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();
  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved