0

いくつかの非同期コードから取得している例外で問題が発生しています。スレッドをブロックしたくありません

private async Task ThrowSomeExceptionAsync()
{
    //Some long running process would go here...

    throw new Exception();
}

これは、呼び出して例外をキャッチするメソッドです。Application.UnhandledExceptionイベントを使用して例外をキャッチしていますが、この場合はキャッチされていません。

返された Task オブジェクトの Exception プロパティが設定されるのを待ってみましたが、タスクの完了中にブロックされます。

ContinueWith メソッドを使用するとブロックは回避されましたが、デリゲートからスローされた例外は UndhandledException イベントによってキャッチされませんでした。

このコードを非同期で実行しながら、UnhandledException イベントをエラー処理に使用するにはどうすればよいですか? そのイベントに関する基本的な概念が欠けていますか?

4

1 に答える 1

1

例外が UnhandledException イベントに送信されない理由は、イベントが XAML フレームワークで発生した例外のみをカバーするためです。例外をスローしているデリゲートは、XAML フレームワークの外部に存在し、イベントを発生させるためにそれを渡しません。ソリューションは、例外を処理し、デリゲートと UnhandledException イベント内の両方からそれを呼び出す静的クラスの形式のようです。

于 2012-09-12T19:20:25.880 に答える