C#thread方法返回一个值?

可能重复:
从Thread.Start()的委托函数访问返回值

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

我如何在Thread中使用此方法?

ThreadStart方法只接受void方法。

我在等你的帮助。 谢谢。

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

这是一种方法:

 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(); 

您应该为此目的使用任务 。

如果您可以使用任何线程方法,请尝试BackgroundWorker

 BackgroundWorker bw = new BackgroundWorker(); public Form1() { InitializeComponent(); bw.DoWork += bw_DoWork; bw.RunWorkerCompleted += bw_RunWorkerCompleted; bw.RunWorkerAsync("MyName"); } void bw_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e) { Text = (string)e.Result; } void bw_DoWork(object sender, DoWorkEventArgs e) { string name = (string)e.Argument; e.Result = "Hello ," + name; }