星期天 十二月 20, 2009 11:13
cSharp中给线程传递参数
在c#中如何给线程传递参数呢?其实很简单。一般来说可以采用2种方式:
- 使用带parameterizeThreadStart委托参数的Thread构造函数
- 定制一个类,通过该类的构造函数初始化想要传递的参数,再将该参数应用该类的方法。把线程的方法定义为该类实例的方法即可。
下面是一个Demo :
public static void Main()
{
//1.使用一个带参数的委托ParameterizedThreadStart来初始化Thread
myData data = new myData();
data.Message = "new Info";
new Thread(paralizeThread).Start(data);
//2.通过初始化一个类的字段,将该类的方法封装到线程中去
new Thread(new myThreadClass("new info2").ThreadMethod).Start();
}
//类或结构都行
struct myData
{
string message;
public string Message
{
get { return message; }
set { message = value; }
}
}
static void paralizeThread(object o)
{
myData data = (myData)o;
Console.WriteLine("Thread {1} received a Parameter : {0}",data.Message,Thread.CurrentThread.ManagedThreadId);
}
class myThreadClass
{
string _message;
public myThreadClass(string message)
{
this._message = message;
}
public void ThreadMethod()
{
Console.WriteLine("Thread {1} received a Parameter : {0}", this._message, Thread.CurrentThread.ManagedThreadId);
}
}
- Category: csharp-note
- No Comments