我正在尝试创建新线程并使用参数传递方法,但错误输出。
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
'
答案 0 :(得分:34)
将参数传递给方法的一种更方便的方法是使用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
这是一本很棒的书!
答案 1 :(得分:12)
将您的线程初始化更改为:
var t = new Thread(new ParameterizedThreadStart(myMethod));
t.Start(myGrid);
还有以下方法:
public void myMethod(object myGrid)
{
var grid = (UltraGrid)myGrid;
}
答案 2 :(得分:0)
public void myMethod(object myGrid)
{
var typedParam = (UltraGrid)myGrid;
//...
}
Thread t = new Thread(new ParameterizedThreadStart(myMethod));
t.Start(myGrid);