コード検査: 戻り値の型が 'void' で、型 'System.EventArgs' のパラメーターを持たないメソッドや関数では 'async' を使用しないでください。
このインスペクションは、async 修飾子が void 戻り型と共に使用されているものの、System.EventArgs 型のパラメーターを受け入れないメソッドおよび関数を検出します。これらのメソッドでは、未処理の例外を待機できず、アプリケーションがクラッシュする可能性があるため、このようなメソッドの使用は推奨されません。
このクイックフィックスは、async void メソッドの本体を try-catch ブロックで囲みます。これにより、メソッド内でスローされた例外がすべてキャッチされ、アプリケーションをクラッシュさせる可能性のある未処理の例外の発生を防止できます。アプリケーションの具体的な要件に応じて、throw; ステートメントをカスタムエラー処理ロジックに置き換えることができます。
この簡単な修正により、例外をキャッチすることで async void メソッドはより安全になりますが、void が必要なイベントハンドラーなどの特定のシナリオを除き、可能な限り async メソッドの戻り値の型として Task を使用する方が一般的には適切です。
関連ページ:
コードインスペクション設定を構成する
設計時コードインスペクションを構成する:デフォルトでは、ReSharper は、サポートされている言語に対応するすべてのファイルで設計時コードインスペクションを有効にします。必要に応じて、無効にすることができます。設計時コードインスペクションが有効かどうかに関係なく、コードインスペクションは常に特定のスコープで実行できます。メインメニューからを選択するか、Alt+R O を押してから、左側のを選択します。設計時コードインスペクションを切り替えるには、コード分析を有効にするチェックボックスを使用し...
コード検査: 戻り値の型が 'void' で、パラメーターが 'System.EventArgs' であるメソッドや関数では 'async' を使用しないでください。| ReSh
このインスペクションは、の戻り値と型のパラメーターを持つメソッドまたは関数で修飾子が使用されているケースを識別します。メソッドは一般的に推奨されませんが、イベントハンドラーでは必要な場合もあります。ただし、これらのシナリオでは例外を適切に処理するために注意が必要です。これらのメソッドでは未処理の例外を待機できず、アプリケーションクラッシュにつながる可能性があります。可能であれば、例外処理と保守性を向上させるために、非同期メソッドの戻り値の型としてまたはを使用することを検討してください。2025