2017-08-28 13 views
-1

私は、HttpTaskAsyncHandlerから継承する非同期ハンドラを持っています。 そのハンドラの中のある行では、documentDB内のコマンドを実行し、次の例のようなタスクを返す非同期メソッド( 'async'キーワードで修飾された)を呼び出すコードがあります。https://docs.microsoft.com/en-us/azure/cosmos-db/documentdb-dotnet-applicationHttpTaskAsyncHandler内のメソッドを待機する

私は通常の汎用ハンドラを持っていましたが、リンクがコントローラを非同期に変更したので、HttpTaskAsyncHandlerから継承するようにハンドラを変更しました。今、私はあまりにも/ここでマルチスレッドを重複しているように感じる、私のハンドラは、非同期ですが、また私はdocumentDBのAPI(動作を挿入する)で動作するメソッドを待っているハンドラの内部です。

私はここで2つの非同期操作をしていますか? 1つはハンドラが非同期で、もう1つがdocumentDBメソッド呼び出しが非同期であるためです。

+0

コードはどこですか?どんなスレッドや重複について話していますか? とにかく 'await'は非同期呼び出しを*作成*しません。それは、すでに非同期操作が完了してから続行するのを待っています。同様に、 'ProcessRequestAsync'メソッドはあなたのコードを非同期にすることはありません。' async/await'を使うこともできますし、単純にフレームワークにホットなタスクを返すこともできます。ハンドラは –

+0

はあなたに感謝、そのタスクを待つ方法を知っている、これは私のコードのようになります。 パブリッククラスClass1:HttpTaskAsyncHandlerタスクProcessRequestAsync(のHttpContextコンテキスト) { は(ASDを待つ)非同期 { 公共オーバーライド。 } プライベート非同期タスク asd() { return await SomeMethod(); } } 私は 'async'キーワードをProcessRequestAsyncメソッドに追加しても差はありませんか? – SimpleDesign

+0

コメントにコードを入れないでください。[あなたの質問を編集する](https://stackoverflow.com/posts/45920795/edit)とそこにコードを書いてください(適切にフォーマットされています) –

答えて

1

私はここで2つの非同期操作をしていますか?はい。

コードの意味は、asd()を待っています。非同期オペレーションが完了した後に希望の結果を生成することを約束します。&コードの下にコードがあると、コード実行のさらなる性質が同期します。

+0

vishalに感謝します。それでは、メソッドに非同期キーワードを追加しましたか? それは大丈夫ですか、私がここでやっている2つの非同期操作が必ず必要ですか? – SimpleDesign

関連する問題