C# 使用带参数的方法创建新线程
我正在尝试创建新线程并传递一个带有参数的方法,但出现了错误C# 使用带参数的方法创建新线程,c#,multithreading,C#,Multithreading,我正在尝试创建新线程并传递一个带有参数的方法,但出现了错误 Thread t = new Thread(myMethod); t.Start(myGrid); public void myMethod(UltraGrid myGrid) { } ---------错误------------ 错误:CS1502-第92行(164)-与 “System.Threading.Thread.Thread(System.Threading.ThreadStart)”已 一些无效的参数 错误:CS15
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
”
将线程初始化更改为:
var t = new Thread(new ParameterizedThreadStart(myMethod));
t.Start(myGrid);
以及用于:
public void myMethod(object myGrid)
{
var grid = (UltraGrid)myGrid;
}
.将参数传递给方法的一种更方便的方法是使用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();
那是一本好书 我想我们应该猜猜你犯了什么错误?请在你的问题中包括你得到的错误!类中是否有多个名为
myMethod
的方法?根本不需要使用ParameterizedThreadStart
,因为可以推断出相应的委托类型。所以只要将参数myGrid
更改为object
就足够了。这很简单,但是如果myMethod返回了什么呢?我应该对代码做什么更改?谢谢,帮助了我。
public void myMethod(UltraGrid myGrid, string s)
{
}
Thread t = new Thread(()=>myMethod(myGrid, "abc"));
t.Start();