2012-06-04 9 views
5

自分のアプリケーションをデバッグするとき、私はこのようなメッセージが表示され、すべての時間:私のBackgroundWorkerのは、エラーをスローしたときにどのように私はpopingからVisual Studioのを防ぐことができます

型「xxxx.xxxxx」の例外がXXXXXで発生しました。 exe ユーザーコードでは処理されませんでした。

問題は、私は彼らのDoWorkで例外をスローBackgroundWorkers、その後、RunWorkerCompletedイベントでRunWorkerCompletedEventArgs.Errorをチェックすることで処理され、これらの持っているということである - そしてそれは、実行時に素晴らしい作品を。

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

DoWorkからのエラーをUIに戻す正しい方法ではありませんか?

例外をApplicationExceptionに拡張し、例外ダイアログのApplicationExceptionの隣にあるボックスを解除しようとしましたが、それでも表示されます。

+1

デバッグ - >例外ダイアログに特定の例外タイプを入れることができます。例外を明示的に無視することができます。 –

+0

DoWorkはcatchブロックでコードによって呼び出されるため、例外は処理されません。 RunWorkerCompletedイベントハンドラに例外を再スローしていますか? –

+0

ありがとうマイク - それは答えです、私はそのベースクラスだけではなく、チェックされていない特定のタイプが必要です。 –

答えて

3

DoWorkメソッドが呼び出すメソッド内で例外を捕捉して処理する必要があります。私の推薦は、例外をキャッチして、スムーズな処理/通知のためにReportProgressイベントを使用してインターフェイスに報告することです。あなたは例外を "飲み込む"ことは望んでいませんが、この報告は、あなたが正常に例外をログに記録したり、より邪魔にならないようにユーザに通知することができます。

ReportProgress that allows the use of a custom userStateのオーバーロードを使用して、適切な進捗状況を報告するか完全な例外を追加する必要があります。

関連する問題