1

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 スレッドがブロックされます。なんで?

4

2 に答える 2

6

を呼び出すときに続行する前に、タスクが終了するのを明示的に待っているためですtask.Wait()

于 2012-07-24T21:04:34.303 に答える
2

あなたが電話しているからですtask.Wait()。タスクの完了を呼び出しスレッドで同期的に待機します。

于 2012-07-24T21:05:02.460 に答える