【发布时间】:2012-12-13 21:13:14
【问题描述】:
目前我的应用程序捕获未处理的异常如下:
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..
});
异常不断重复自身(在调试中)。
尽管在发布模式或 Visual Studio 之外,应用程序已完成(AppDomain.CurrentDomain.UnhandledException 的标准行为
如何避免或改变这种行为?
我的目标是只运行一次代码。是否发生异常独立。要求之一是它由计时器触发。 别的东西..如果有异常,它应该被 DispatcherUnhandledException 或 UnobservedTaskException 或类似的处理(这使我无法为每个订阅和应用程序的关闭编写一个 try catch)
【问题讨论】:
-
异常说明了什么。我怀疑如果有一个 Timer 控件,该 Observable.Timer(TimeSpan.Zero).Do 代码将在一定数量的间隔内触发。请粘贴异常基本数学除以 0 = 0 但在代码中将产生 DivideByZero 异常
-
重点是:.Take(1) 不被尊重,我更新了我的问题.. 无论抛出什么异常
-
Observable.Timer(DateTimeOffset.MinValue, TimeSpan.FromSeconds(1));这对你有用吗?
-
我真的很困惑你要做什么......你能不能以不同的方式使用 Observable.Timer 而不是作为实验室
-
如果我没记错的话它会继续抛出异常,因为你的 => { Trace.WriteLine("Subscribe");抛出新异常(); // 模拟.. });也许我对您的预期结果感到困惑..您可以尝试重新提出您的问题
标签: c# system.reactive unhandled-exception