非同期 Void が優れたアイデアではない理由: 理由を分析する
非同期メソッドから void を返すことは、特定の点では無害に見えるかもしれません。場合によっては、業界のベスト プラクティスにより、これは強く推奨されません。その理由は次のとおりです:
1.例外処理の奇抜
Async void メソッドには、独自のエラー処理セマンティクスがあります。提供された例の「PrimeCustomTask」など、async void メソッドからエスケープする例外は、キャッチして処理するのが困難になります。これにより、エラー処理が複雑になり、デバッグがより困難になります。
2.構成上の課題
Async void メソッドには、他の非同期操作と適切に構成する機能がありません。 「PrimeCustomTask」内のコードは分離して存在し、上位レベルの非同期構造に簡単に統合できません。これにより、コードの保守性とコードの再利用が制限されます。
3.テストの難しさ
async void メソッドの単体テストは難しいことで有名です。メソッドは void を返すため、信頼性の高いアサーションを作成し、考えられるすべての実行パスをテストするのは困難です。これにより、コードの正確性を保証することが困難になります。
4.例外の伝播
回答で述べたように、「PrimeCustomTask」からエスケープする例外は呼び出し元に自然には伝播されません。これにより、予期しない動作が発生し、エラーを効果的に処理することが困難になる可能性があります。
規則に従って変更する
確立された規則に合わせるために、非同期タスク メソッドの使用例:
protected override async Task OnLoad(EventArgs e) { if (CustomTask == null) await PrimeCustomTask(); } private async Task PrimeCustomTask() ...
非同期タスクを返すことで、次のようなメリットがあります。 from:
これらのベスト プラクティスを採用することで、より保守しやすい記述が可能になります。非同期メソッドを使用すると、テスト可能で信頼性の高いコードになります。
以上がC# で非同期 Void メソッドを避けるべき理由は何ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。