2009-07-09 9 views
1

Dispatcherを使用して、WPFアプリケーションで未処理の例外をキャッチします。これはapp.xaml.csファイルで定義されており、うまく動作します。ただし、特定のWPFユーザーコントロールで発生した未処理の例外を検出してトラップする状況があります。そのコントロールに関連する処理されていないエラーを、アプリケーションレベルでハンドラが受け取って処理する前に傍受することができるようにしたいと考えています。 User Controlディスパッチャのハンドラを設定しようとすると、未処理のエラーは、常にアプリケーションレベルで処理された後、ユーザコントロールレベルで処理されるように見えます。両方のハンドラーにHandled = Trueを入れても、ワーカースレッドは使用されていません。未処理の例外をアプリケーションレベルに到達する前にキャッチするアプリケーションレベル

私たちはユーザーコントロールとそれが呼び出すすべてのコードに入り、try {} catch {}ブロックを設定してカスタム例外をスローすることができますが、もう少し多くのターンキーソリューションが必要です。

すべてのアイデア?この質問は理にかなって

・ホープ..

答えて

2

「ユーザーコントロールディスパッチャ」などというものはありません。スレッドごとに常にアクティブディスパッチャが1つあります。したがって、Dispatcher.UnhandledExceptionイベントのハンドラーの処理順序は、登録された順序によってのみ定義されます。

+0

しかし、とにかくどのように特定のコントロールの例外をキャッシュするには? – Evgeny

+1

一般的に言えば、例外はコントロールに関連付けられていません。いくつかのカスタム例外タイプは、元のオブジェクトを識別するプロパティを定義するかもしれませんし、カスタムコントロールのいくつかはその例外タイプを使用しているかもしれませんが、もちろんInvalidOperationException'のような.NET例外については役に立ちません。 –

関連する問題