在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); 来举例嘛。本人都比较明确地说了“你可以调用任何代码”喽。