C# 非同期プログラミングにおける Await と Task.Result のベスト プラクティス
C# での非同期プログラミングには、長時間実行される作業単位をカプセル化するタスクが含まれることがよくあります。タスクを処理する 2 つの一般的な方法は、await
と Task.Result
です。どちらも同様の結果を達成できますが、動作には微妙な違いがあります。
await
キーワードは、待機中のタスクが完了するまで現在のメソッドの実行を一時停止します。完全に完了したタスクの場合、await
式はタスクの結果を直接返すため、コードがクリーンになり、パフォーマンスが向上する可能性があります。
対照的に、Task.Result
はタスクの結果をすぐに取得します。タスクが失敗すると、AggregateException
例外がスローされ、一部の非同期シナリオではデッドロックが発生する可能性があります。したがって、一般的には await
の代わりに Task.Result
を使用することをお勧めします。
Stephen Cleary は、主に次の 2 つの理由から、await
の代わりに Task.Result
を使用することを推奨しています。
await
でラップしないため、非同期コードでのエラー管理が簡素化されます。 AggregateException
Result
は、特に非同期メソッド内で使用される場合、デッドロックを引き起こす可能性があります。 Wait
実行を再開する前にタスクが完了していることを確認することで、このリスクを排除します。 await
使用ガイド:
Cleary の推奨に従って、、Result
、および Wait
の使用には次のガイドラインが適用されます。 await
await
Result
は、適切なドキュメントを使用して注意して使用できます。 Wait
Result
が適切です。 Wait
以上がAwait と Task.Result: C# でそれぞれをいつ使用する必要がありますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。