5

アプリケーションをデバッグすると、次のようなメッセージが常に表示されます。

タイプ'xxxx.xxxxx'の例外がxxxxx.exeで発生しましたが、ユーザーコードでは処理されませんでした。

問題は、DoWorkで例外をスローするBackgroundWorkersがあり、それらはRunWorkerCompletedイベントのRunWorkerCompletedEventArgs.Errorをチェックすることで処理されることです。これは、実行時にうまく機能します。

Visual Studioがこれらを「未処理」として表示しないようにする方法はありますか?

これは、DoWorkからUIにエラーを返す正しい方法ではありませんか?

例外をApplicationExceptionに拡張させ、例外ダイアログのApplicationExceptionの横にあるボックスのチェックを外してみましたが、それでも表示されます。

4

1 に答える 1

3

DoWork メソッドが呼び出すメソッド内で例外をキャッチして処理する必要があります。私の推奨事項は、例外をキャッチし、ReportProgress イベントを使用してそれをインターフェイスに報告し、スムーズな処理/通知を行うことです。例外を「飲み込み」たくはありませんが、このレポートにより、例外を適切にログに記録したり、邪魔にならない方法でユーザーに通知したりできます。

適切な進行状況を報告するか、完全な例外を添付できるように、カスタム userState を使用できる ReportProgressのオーバーロードを使用する必要があることに注意してください。

于 2012-06-04T23:26:44.887 に答える