現在、私のアプリケーションは次のように未処理の例外をキャプチャします。
AppDomain.CurrentDomain.UnhandledException += CurrentDomain_UnhandledException;
Application.Current.DispatcherUnhandledException += Current_DispatcherUnhandledException;
TaskScheduler.UnobservedTaskException += TaskScheduler_UnobservedTaskException;
ただし、例外が発生すると、次のようになります(例)。
TimeSpan toExecute = AnyMethod();
Observable.Timer(toExecute).Take(1).Subscribe((r) =>
{
Trace.WriteLine("Subscribe");
throw new Exception(); // simulation..
});
例外は(デバッグ時に)無限に繰り返され続けます。リリースモードまたはVisualStudioの外では、アプリケーションはファイナライズされます(AppDomain.CurrentDomain.UnhandledExceptionの標準的な動作
この動作を回避または変更するにはどうすればよいですか?
私の目標は、コードを1回だけ実行することです。例外が発生するかどうかは独立しています。要件の1つは、タイマーによってトリガーされることです。他の何か..例外がある場合は、DispatcherUnhandledExceptionまたはUnobservedTaskExceptionまたは同様の方法で処理する必要があります(これにより、サブスクリプションごとにtry catchを記述して、アプリケーションをシャットダウンできなくなります)