为了使示例尽可能简单,我运行了一个程序,该程序从主线程调用一个将返回状态的函数:
private void button1_Click(object sender, EventArgs e)
{
MessageBox.Show(check().ToString());
}
private bool check()
{
Thread.Sleep(5000);
return true;
}
它将按我想要的方式工作,它等待功能完成并显示返回值,但是这样做将导致GUI锁定并且无法移动。从另一个线程运行它不会阻止GUI,但是我必须等待结果,因此,如果我等待线程完成即时通讯回到同一个问题,则gui将被锁定。
等待函数返回其值而不阻塞GUI的最佳方法是什么?