0

ASYNC 呼び出しが必要な WCF Web サービスの作成で忙しいです。私はこれまでこれを行ってきました:

public async Task<bool> sendData(Data data) {
    bool sent = await Task<bool>.Factory.StartNew(() => {
        return someNameSpace.ReceiveData(data);
    });

    return sent;
}

私の質問は、dll への呼び出しも非同期としてマークする必要がありますか?

すなわち。dll内

public async Task<bool> ReceiveData(Data data) {
    // some async code
    // some code here
}
4

1 に答える 1

6

async/ awaitintro が役に立つかもしれません。async特にWCFを扱う投稿もあります。

いくつかの一般的なポイント:

  • バックグラウンド スレッドで何らかのコードを明示的に実行する場合を除き、StartNew(または)を使用しないでください。Task.Run
  • Taskどこから来たかに関係なく、任意の を待つことができます。Taskあるかもしれないし、そうでないかもしれないを返すメソッド-それはそのメソッドasyncでのみ違いを生みます。

したがって、あなたReceiveDataがこれらのいずれかである場合 (それらは に同じように見えますSendData):

public async Task<bool> ReceiveData(Data data);
public Task<bool> ReceiveData(Data data);

await次に、次のようにすることができますSendData

public async Task<bool> SendData(Data data)
{
  bool sent = await someNameSpace.ReceiveData(data);
  ... // do other stuff
  return sent;
}
于 2012-08-23T11:55:41.073 に答える