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; }