我有一个带有WCF代理的WinForms应用程序示例。我正在使用FromAsync返回一个Task并在返回结果之前等待任务完成:
private bool Foo() {
var proxy = new MyProxy();
var request = new ProxyRequest();
var task = Task<ReturnType>.Factory.FromAsync<ProxyRequest>(client.BeginCall, client.EndCall, request, null);
task.Wait();
return true;
}
从按钮调用此方法时,单击窗体阻止UI线程。为什么呢?
答案 0 :(得分:6)
因为您在调用task.Wait()
时继续显式等待任务完成。
答案 1 :(得分:2)
因为您正在呼叫task.Wait()
。它在调用线程上同步等待任务完成。