TASK线程问题请教
我的需求是,用TASK创建线程,运行一个函数funA。函数中读外设的值,将读过来的值,即时的赋给主窗体的控件。在主线程中,我需要等待tsk1线程运行结束后,再继续后面的代码。
问题在于:当我通过Task.WaitAll等待线程执行结束,程序会假死。删除Task.WaitAll(tsk1)后,设断点查看Tsk1的状态一直为“Running”。
请教各位解决办法。
private void button1_Click(object sender, EventArgs e)
{
Task tsk1 = Task.Factory.StartNew(() => funA());
Thread.Sleep(1000);
Task.WaitAll(tsk1);
等待,tsk1结束后,继续运行后面的代码。
}
private string funA()
{
……一些运算
this.Invoke(new Action(
() => { this.label1.Text = "结果1"; }));
……继续运算
this.Invoke(new Action(
() => { this.label2.Text = "结果2"; }));
……继续运算
}