我正在尝试像这样启动新线程
public class MyClass1
{
public void DoThings(Func<object,string,string,bool> handler)
{
//...doing some stuff
object param1 = ...
string param2 = ...
string param3 = ...
if (somecondition)
handler(param1, param2, param3);
//...do other stuff
}
}
public class MyClass2
{
public bool DoParticularThing(object p1, string p2, string p3)
{
//..do stuff
}
public MyClass2()
{
var myclass1Instance = new MyClass1();
Thread t = new Thread(new ThreadStart(myclass1Instance.DoThings(DoParticularThing))); //here comes my error
}
}
不幸的是,我继续遇到“期望的方法名”错误。我浏览了很多帖子,但我不明白是什么问题。
答案 0 :(得分:2)
发生这种情况是因为您正在使用需要委托类型的void函数创建ThreadStart,因此您应该简单地执行以下操作:
Thread t = new Thread(new ThreadStart(()=>myclass1Instance.DoThings(DoParticularThing)));
使用lambda语法, 还值得一提的是,Thread类已经很老了,您最好使用Tasks,它更好一些,并支持诸如取消标记和其他很多有趣的东西。 语法是:
Task<bool>.Run(()=>{
//..do stuff,the logic of your DoParticularThing function
});