正在使用带参数的方法创建新线程
本文关键字:新线程 创建 线程 方法 参数 | 更新日期: 2023-09-27 17:59:00
我试图创建新线程并传递一个带参数的方法,但出错了。
Thread t = new Thread(myMethod);
t.Start(myGrid);
public void myMethod(UltraGrid myGrid)
{
}
---------错误---------------
错误:CS1502-行92(164)-最佳重载方法匹配"
System.Threading.Thread.Thread(System.Threading.ThreadStart)
"具有一些无效的参数错误:CS1503-第92(164)行-参数"1":无法从转换"方法组"到"
System.Threading.ThreadStart
"
将参数传递给方法的一种更方便的方法是使用lambda表达式或匿名方法,这是因为您可以传递具有所需参数数量的方法。ParameterizedThreadStart仅限于只有一个参数的方法。
Thread t = new Thread(()=>myMethod(myGrid));
t.Start();
public void myMethod(UltraGrid myGrid)
{
}
如果你有像这样的方法
public void myMethod(UltraGrid myGrid, string s)
{
}
Thread t = new Thread(()=>myMethod(myGrid, "abc"));
t.Start();
http://www.albahari.com/threading/#_Passing_Data_to_a_Thread
那是一本很好读的书!
将线程初始化更改为:
var t = new Thread(new ParameterizedThreadStart(myMethod));
t.Start(myGrid);
以及方法:
public void myMethod(object myGrid)
{
var grid = (UltraGrid)myGrid;
}
匹配ParameterizedThreadStart
代表签名。
public void myMethod(object myGrid)
{
var typedParam = (UltraGrid)myGrid;
//...
}
Thread t = new Thread(new ParameterizedThreadStart(myMethod));
t.Start(myGrid);