线程问题,讨教

.Net技术 码拜 8年前 (2016-03-06) 931次浏览
在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

引用 LZ wuyajungogo 的回复:

在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”

public static void Calculate(ref Hashtable arg)
改为
public static void Calculate(object Hashtable arg)
接收到后进行强制转换

30

你完全可以写

Calculate(ref tb);

啊?!本人不过就是用 Calculate(x); 来举例嘛。本人都比较明确地说了“你可以调用任何代码”喽。


CodeBye 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明线程问题,讨教
喜欢 (0)
[1034331897@qq.com]
分享 (0)