为什么Task.Factory.FromAsync阻止UI线程?

Jon*_*ski 0 c# task-parallel-library c#-4.0

我有一个带有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; 
}
Run Code Online (Sandbox Code Playgroud)

从按钮调用此方法时,单击窗体阻止UI线程.为什么?

And*_*bel 6

因为您在继续调用之前明确等待任务完成task.Wait().

  • @JonasStawski我建议你在删除`task.Wait`时发布你正在使用的代码.你发布的代码有一个明显的缺陷; 你正在使用的代码显然有不同的代码...... (2认同)