Async Void と ASP.Net: 例外について
ASP.Net アプリケーションで async void メソッドを使用すると、例外が発生する可能性があります「非同期操作がまだ保留されている間に、非同期モジュールまたはハンドラーが完了しました。」この例外は、async void が呼び出し時に未処理の操作の数をインクリメントし、完了時にデクリメントするために発生します。
対照的に、async Task メソッドは Task オブジェクトを返すため、ASP.Net フレームワークが非同期操作を追跡して処理できるようになります。
タスクが役立つ理由
タスクを返すことで、フレームワークを有効にすると、次のことが可能になります。
Async Void と Fire-and-Forget
async void メソッドは Fire-and-Forget アプローチを実装しているように見えますが、これは不正確ですASP.Net のコンテキストで。フレームワークはこれらのメソッドを積極的に追跡し、途中で完了した場合は例外を発生させます。
真のファイア アンド フォーゲット動作を実現するには、非同期 Task メソッドを使用し、返された Task を無視します。ただし、ASP.Net でのリクエストからの早すぎるリターンは、潜在的な問題があるため、通常は推奨されません。
追加メモ
以上がASP.NET で「async void」を使用すると、「非同期操作がまだ保留されている間に非同期モジュールまたはハンドラーが完了しました」という結果がよく発生するのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。