在c#中, 创建一个线程, 线程委托能用引用类型的参数?
class Program
{
static void Main(string[] args)
{
Hashtable tb=new Hashtable();
ParameterizedThreadStart tStart = new ParameterizedThreadStart(Calculate);
Thread thread = new Thread(tStart);
thread.Start(tb);//传递参数
Thread.Sleep(2000);
Console.Read();
}
public static void Calculate(ref Hashtable arg)
{
//处理该HashTable
}
}
目前报错:no overload for”Calculate” matches delegate “ParameterizedThreadStart”
解决方案
10
public static void Calculate(ref Hashtable arg)
改为
public static void Calculate(object Hashtable arg)
接收到后进行强制转换
30
你完全可以写
Calculate(ref tb);
啊?!本人不过就是用 Calculate(x); 来举例嘛。本人都比较明确地说了“你可以调用任何代码”喽。