あなたが提供した不自然な例など、特定のシナリオでは async void の使用が許容されるように見えるかもしれませんが、実際はそうではありません。これは、いくつかの基本的な理由により、一般的に悪い習慣であると考えられています。
非同期 void メソッドの主な落とし穴の 1 つは、エラー処理セマンティクスが異なることです。非同期 void メソッドからエスケープする例外は自動的には伝播されず、キャッチするのが難しく、予期しない動作につながる可能性があります。
非同期 void メソッドには、より上位のメソッドに合成する機能がありません。 -レベルの非同期メソッド。 async void メソッド内にカプセル化されたロジックは分離されているため、再利用や他の非同期コードとの統合が困難になります。
Async void メソッドには、テストにおいて大きな課題があります。例外は自動的に伝播されないため、メソッドの機能とその潜在的なエラー パスを効果的にカバーする単体テストを作成するのはより複雑です。
また、次の点にも注意してください。 async void は、非同期プログラミングをサポートする他の言語で採用されている一般的な手法から逸脱したアプローチです。 F#、Python、JavaScript、TypeScript などの言語には、構文の一部として async void が含まれていません。
あなたが提示した特定のシナリオでは、非同期操作の結果を待つ場合、より適切な方法は、async void イベント ハンドラーを使用することです。応答で提供されるコード スニペットに示されているように、イベント ハンドラーを async void に変更すると、目的の機能を実現しながら、async void に関連する欠点を軽減できます。
以上がAsync Void が非同期プログラミングにおいて悪い習慣だと考えられているのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。