如果你想为一个线程传入变量你怎么办?
ThreadStart可不支持带参数的方法.所以你无法使用Thread来启动一个带参数的方法..
ThreadStart myThreadDelegate
=
new
ThreadStart(ThreadMethod);
//
public delegate void ThreadStart(); u can't pass a Parameter
Thread myThread
=
new
Thread(myThreadDelegate);
myThread.Start();
//
myThread.Start(o); Wrong!
不过在.Net1.0下,你可以通过Delegate的异步调用来实现.现在在.Net2.0下提供了ParameterizedThreadStart 这么一个Delegate.它和ThreadStart 的不同就在于可以拥有一个object类型的参数.也就是说你可以通过它来使用Thread类以启动一个线程并传入参数, 和Java很象了,不错的新功能.
using
System;
using
System.Threading;
namespace
ParameterizedThreadStartTest
{
class Program
{
static void Main(string[] args)
{
ParameterizedThreadStart myParameterizedThreadDelegate = new ParameterizedThreadStart(ThreadMethod); Thread myThread = new Thread(myParameterizedThreadDelegate);
object o = "hello";
myThread.Start(o);
}
private static void ThreadMethod(object o)
{
string str = o as string;
Console.WriteLine(str);
}
}
}