这个问题已经在这里有了答案:




9年前关闭。





public string sayHello(string name)
{
    return "Hello ,"+ name;
}

如何在Thread中使用此方法?

该ThreadStart方法只接受void方法。

我在等你的帮助。
谢谢你。

最佳答案

ThreadStart不仅期望void方法,还期望它们不接受任何参数!您可以将其包装在lambda,匿名委托(delegate)或命名的静态函数中。

这是一种实现方法:

string res = null;
Thread newThread = new Thread(() => {res = sayHello("world!");});
newThread.Start();
newThread.Join(1000);
Console.Writeline(res);

这是另一种语法:
Thread newThread = new Thread(delegate() {sayHello("world!");});
newThread.Start();

第三种语法(带有命名函数)最无聊:
// Define a "wrapper" function
static void WrapSayHello() {
    sayHello("world!);
}

// Call it from some other place
Thread newThread = new Thread(WrapSayHello);
newThread.Start();

10-07 12:57