您的代码触发器AppDomain.CurrentDomain.UnhandledException
,它终止 .NET 2.0 及更高版本的应用程序执行。如果您在 Visual Studio 中调试该代码,您会反复收到未处理的异常通知。
在 .NET Framework 1.0 和 1.1 版中,发生在主应用程序线程以外的线程中的未处理异常会被运行时捕获,因此不会导致应用程序终止。因此,可能会在应用程序终止的情况下引发 UnhandledException 事件。在 .NET Framework 2.0 版中,删除了对子线程中未处理异常的支持,因为这种静默故障的累积影响包括性能下降、数据损坏和锁定,所有这些都难以调试。有关更多信息,包括运行时不终止的情况列表,请参阅托管线程中的异常。
请参阅AppDomain.UnhandledException Event的文档。
对于那些好奇的人,这里是堆栈跟踪(适用于 .NET 3.5 和 Reactive Extensions 版本 1.0.10621.0):
System.Exception: Exception of type 'System.Exception' was thrown.
at yournamespace.MainWindow.<Button_Click>b__0(Int64 r) in path\MainWindow.xaml.cs:line XX
at System.Reactive.AnonymousObserver`1.Next(T value)
at System.Reactive.AbstractObserver`1.OnNext(T value)
at System.Reactive.AnonymousObservable`1.AutoDetachObserver.Next(T value)
at System.Reactive.AbstractObserver`1.OnNext(T value)
at System.Reactive.Linq.Observable.<>c__DisplayClass2ff`1.<>c__DisplayClass301.<Take>b__2fe(TSource x)
at System.Reactive.AnonymousObserver`1.Next(T value)
at System.Reactive.AbstractObserver`1.OnNext(T value)
at System.Reactive.AnonymousObservable`1.AutoDetachObserver.Next(T value)
at System.Reactive.AbstractObserver`1.OnNext(T value)
at System.Reactive.Linq.Observable.<>c__DisplayClass35b.<>c__DisplayClass35d.<Timer>b__35a()
at System.Reactive.Concurrency.Scheduler.Invoke(IScheduler scheduler, Action action)
at System.Reactive.Concurrency.ThreadPoolScheduler.<>c__DisplayClass5`1.<Schedule>b__3(Object _)
at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state)
at System.Threading._TimerCallback.PerformTimerCallback(Object state)