本文主要是介绍Avalonia 捕获全局异常(UI线程 和 非UI线程),增加客户端的稳定性,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
在 App.axaml.cs 中,App类添加下列事件;
1.重写 OnFrameworkInitializationCompleted ,会在程序初始化完成后触发
2. 绑定AppDomain中当前域的事件
AppDomain.CurrentDomain.UnhandledException += HandleGlobalException; //UI线程
AppDomain.CurrentDomain.ProcessExit += CurrentDomain_ProcessExit;//非UI线程
public override void OnFrameworkInitializationCompleted(){try{if (ApplicationLifetime is IClassicDesktopStyleApplicationLifetime desktop){var main = new MainWindow();main.DataContext = new VM_MainWindow(main);desktop.MainWindow = main;}else if (ApplicationLifetime is ISingleViewApplicationLifetime singleViewPlatform){var main = new MainView(); singleViewPlatform.MainView = main;}base.OnFrameworkInitializationCompleted();//全局异常捕获AppDomain.CurrentDomain.UnhandledException += HandleGlobalException;AppDomain.CurrentDomain.ProcessExit += CurrentDomain_ProcessExit;}catch(Exception ex){LogOperate.Error("程序启动发生异常", ex);Environment.Exit(0);}}private void CurrentDomain_ProcessExit(object? sender, EventArgs e){ThreadOperate.OnExit();}private void HandleGlobalException(object sender, UnhandledExceptionEventArgs e){try{// 处理全局异常的逻辑Exception exception = (Exception)e.ExceptionObject;//Console.WriteLine($"Unhandled Exception: {exception.Message}");LogOperate.Error("HandleGlobalException 全局异常", exception);}catch(Exception ex){LogOperate.Error("HandleGlobalException 全局异常[catch]", ex);} }
这篇关于Avalonia 捕获全局异常(UI线程 和 非UI线程),增加客户端的稳定性的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!