1

async awaitサービスの呼び出しでキーワードを使用することを検討していますが、awaitキーワードが必要かどうか疑問に思っていますか?

見つかった場合は例を変更します。私がやりたいことはasync、仕事を続けるサービスへの呼び出しをセットアップすることですが、応答を待つ必要はありません。

async Task CallService(InformationForService informationForService)
{
    var service = SetupService();

    // Does this need the await keyword?
    service.Doof(informationForService);

}
4

2 に答える 2

1

メソッドは待機可能である必要はありませんasync。ではなくても、返さTaskれ、 で使用できるメソッドが多数あります。awaitasync

あなたのサービスはWCFサービスであると想定しています。この場合、VS2012 を使用してプロキシを (再) 生成するDoofと、サービスのすべてのメソッドに対して、 で動作するメソッドが取得DoofAsyncawaitされます。

メソッドは である必要はありませCallServiceasyncTaskから取得した を返すことができますDoofAsync

Task CallService(InformationForService informationForService)
{
  var service = SetupService();
  return service.DoofAsync(informationForService);
}
于 2013-03-08T13:53:46.413 に答える
1

関数を async として宣言し、それが Task を返す場合、コード内の何かでその型を返す必要があります。呼び出しがサービスに送信されている間に通常は関数から生成され、サービスへの呼び出しが応答したときに次の行から続行する await キーワードを使用していないため、コードには何も表示されません.

サービスが何を返すかを気にしない場合は、無視してください。ただし、await キーワードを使用してください。これにより、サービス呼び出しが完了している間、コードが他の作業を続行できるようになります。

async Task<int> CallService(InformationForService informationForService)
{
    var service = SetupService();

    // Does this need the await keyword?
    await service.Doof(informationForService);

}

また、WCF を使用してサービスを呼び出している場合は、メッセージの最後のバイトが送信されると完了する一方向の呼び出しを発行できることに注意してください。Juval Lowy は、このホワイト ペーパーで一方向通話について説明しています

于 2013-03-08T10:27:28.860 に答える