メソッドが「async」として宣言されている場合、そのメソッドを呼び出すときに、await を使用することも使用しないこともできます。いつ使うのか、どんな効果があるのか知りたいです。
2 に答える
async キーワードは、メソッドに await ステートメントが含まれている可能性があることをコンパイラに示すだけです。
デザインの選択について説明している Eric Lippert による興味深い投稿があります。
「非同期」を要求するということは、すべての下位互換性の問題を一度に排除できることを意味します。await 式を含むすべてのメソッドは、「古い作業」コードではなく、「新しい作成」コードでなければなりません。これは、「古い作業」コードには async 修飾子がなかったためです。
http://blogs.msdn.com/b/ericlippert/archive/2010/11/11/whither-async.aspx
マークされた非同期メソッドは通常、await を使用して中断ポイントを指定します。await 演算子は、待機中の非同期プロセスが完了するまで、非同期メソッドがその時点を超えて続行できないことをコンパイラに伝えます。その間、制御は非同期メソッドの呼び出し元に戻ります。
つまり、asyncronius プログラミングを行っていて、特定のスレッド タスクを同時に実行したい場合は、async と await に依存する必要があります。
詳しい説明はこちら
http://msdn.microsoft.com/en-us/library/vstudio/hh191443.aspx