Lio*_*Lou 11 c# multithreading
我正在尝试创建新线程并传递带参数的方法,但错误输出.
Thread t = new Thread(myMethod);
t.Start(myGrid);
public void myMethod(UltraGrid myGrid)
{
}
Run Code Online (Sandbox Code Playgroud)
--------- ------------错误
错误:CS1502 - 第92行(164) - '
System.Threading.Thread.Thread(System.Threading.ThreadStart)
' 的最佳重载方法匹配包含一些无效参数错误:CS1503 - 第92行(164) - 参数'1':无法从'方法组'转换为'
System.Threading.ThreadStart
'
Igo*_*goy 44
将参数传递给方法的更方便的方法是使用lambda表达式或匿名方法,为什么因为您可以使用所需的参数数量传递方法.ParameterizedThreadStart仅限于只有一个参数的方法.
Thread t = new Thread(()=>myMethod(myGrid));
t.Start();
public void myMethod(UltraGrid myGrid)
{
}
Run Code Online (Sandbox Code Playgroud)
如果你有一个类似的方法
public void myMethod(UltraGrid myGrid, string s)
{
}
Thread t = new Thread(()=>myMethod(myGrid, "abc"));
t.Start();
Run Code Online (Sandbox Code Playgroud)
http://www.albahari.com/threading/#_Passing_Data_to_a_Thread
这是一本很棒的书!
gza*_*axx 12
将您的线程初始化更改为:
var t = new Thread(new ParameterizedThreadStart(myMethod));
t.Start(myGrid);
Run Code Online (Sandbox Code Playgroud)
还有以下方法:
public void myMethod(object myGrid)
{
var grid = (UltraGrid)myGrid;
}
Run Code Online (Sandbox Code Playgroud)
匹配ParameterizedThreadStart
代理签名.