2017-03-21 2 views
0

みましょう、我々はメソッドを持っていることを言う:後で操作がなくなったらタスクを待つのは意味がありますか?

public async Task FlushBuffer(List<UmtsCellKpiReceived> kpis) 
{ 
    await _umtsCellService.ProcessUmtsCellKpi(kpis).ConfigureAwait(false); 
} 

それはここで、このTaskを待つことに意味がありますか?私が最近行った議論の1つでは、待たずにMyTask()がスローされた場合、UnobservedTaskExceptionを危険にさらす孤立したタスクが作成されることを知りました。

これはawaitのすべての理由ですか?

+1

あなたが直接タスクを返す限り、いいえ。 'await'を使う唯一の理由は、あなたが結果で何かをしたいからです。場合は、呼び出し元にタスクを返すだけではありません。 –

+0

@PanagiotisKanavosが正しいです。私はあなたのコードを正しく読まなかった。 – spender

+1

@Cemre、このリンクhttp://www.albahari.com/threading/part5.aspx#_TaskCreationOptions にアクセスしてください。このトピックでは、例外処理タスクについての回答が表示されます。お役に立てれば!!! – Zinov

答えて

1

あなたの場合、ただ1行の方法で、Taskを返すことができますが、async/awaitは必要ありません。呼び出しコードはTaskを待つことができます。

+0

そのような状況では、メソッドは 'async'とマークする必要がありますか? 'async'キーワードの目的は基本的に' await'キーワードの使用を可能にするためではないと思います。 –

+0

あなたは正しいです。メソッドを非同期に設定しないで、実際には、awaitステートメントを持たない非同期メソッドは警告を生成します。 – FishBasketGordo

関連する問題