private void TaskScheduler_UnobservedTaskException(object sender, UnobservedTaskExceptionEventArgs e) { try { Logger.Fatal("Task线程异常", e.Exception); e.SetObserved();//设置该异常已察觉(这样处理后就不会引起程序崩溃) MessageWin.Error("系统发生未处理的异常", "系统错误"); ShutdownWhenNoMainWindow(); } catch (Exception ex) { MessageBox.Show(ex.Message, "非UI线程发生未处理错误", MessageBoxButton.OK, MessageBoxImage.Error); } }
private void App_DispatcherUnhandledException(object sender, DispatcherUnhandledExceptionEventArgs e) { try { e.Handled = true; //把 Handled 属性设为true,表示此异常已处理,程序可以继续运行,不会强制退出 Logger.Fatal("UI线程异常", e.Exception); MessageWin.Error("系统发生未处理的异常", "系统错误"); ShutdownWhenNoMainWindow(); } catch (Exception ex) { MessageBox.Show(ex.Message, "UI线程发生未处理错误", MessageBoxButton.OK, MessageBoxImage.Error); } }
private void CurrentDomain_UnhandledException(object sender, UnhandledExceptionEventArgs e) { try { var msg = "非UI线程发生"; msg += e.IsTerminating ? "致命错误" : "异常"; if (e.ExceptionObject is Exception ex) { Logger.Fatal(msg, ex); } else { Logger.Fatal(msg, new Exception(e.ExceptionObject?.ToString())); } MessageWin.Error("系统发生未处理的异常", "系统错误"); ShutdownWhenNoMainWindow(); } catch (Exception ex) { MessageBox.Show(ex.Message, "非UI线程发生未处理错误", MessageBoxButton.OK, MessageBoxImage.Error); } }
private UserControl CreateView(string className, string title) { UserControl view = null; try { view = Container.ResolveNamed <IDependency>(className) as UserControl; if (view == null) { Logger.Warn($"【{title}】初始化失败"); MessageWin.Warn($"【{title}】初始化失败"); return(null); } view.Unloaded += ChildView_Unloaded; } catch (Exception ex) { Logger.Error($"【{title}】初始化错误", ex); MessageWin.Error($"【{title}】初始化错误"); return(null); } return(view); }
public static void MessageError(string msg, string title = "错误") { DispatcherInvoke(() => { MessageWin.Error(msg, title); }); }