Avalonia 捕获全局异常(UI线程 和 非UI线程),增加客户端的稳定性

这篇具有很好参考价值的文章主要介绍了Avalonia 捕获全局异常(UI线程 和 非UI线程),增加客户端的稳定性。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

在 App.axaml.cs 中,App类添加下列事件;

1.重写 OnFrameworkInitializationCompleted ,会在程序初始化完成后触发

2. 绑定AppDomain中当前域的事件

            AppDomain.CurrentDomain.UnhandledException += HandleGlobalException; //UI线程
            AppDomain.CurrentDomain.ProcessExit += CurrentDomain_ProcessExit;//非UI线程文章来源地址https://www.toymoban.com/news/detail-855992.html

   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线程),增加客户端的稳定性的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 使用Flask-Restful后handle_error干扰无法正常捕获全局异常的解决

    1、发现问题 1.1、追踪Api源码,vscode举例,右键点击Api,选择转到定义,确定flask_restful包的位置 1.2、vscode 打开flask_restful包作为一个项目 1.3、之前的问题是,抛出的HTTPException,会变成这个形状: 所以全局搜索message 很明显就是这里,点进去 1.4、打印一下 1.5、简单调试一下,

    2024年02月09日
    浏览(33)
  • ios客户端学习笔记(七):iOS客户端的UI设计

    iOS客户端的UI设计是指在iOS操作系统上开发应用程序时所涉及的用户界面设计,包括应用程序的布局、颜色、字体、图标等元素的设计。良好的UI设计应该能够提高用户体验,使用户能够轻松地使用应用程序。 在iOS客户端的UI设计中,需要考虑以下几个方面: 应用程序布局应

    2023年04月26日
    浏览(36)
  • Spring Boot 项目上传文件时,文件过大报错解决一站式办法(含:最大值设置,全局异常捕获)

            Spring Boot 项目传文件时,如果不单独设置大小,默认最大1Mb,会报这个错: 这个意思就是上传的文件超出了其最大允许大小1048576字节 解决办法就是,根据自己业务需求设置合适的文件上传大小限制 目录 配置文件配置示例 全局异常捕获 设置方法示例:  1. 首先在配

    2024年02月10日
    浏览(45)
  • 【python】windows客户端的ui自动化框架搭建及使用(winappdriver)

    0.环境准备 安装jdk(8以上版本)及其环境配置 安装python3.10.4及其对应的三方包 安装winappdriver,下载地址:https://github.com/microsoft/WinAppDriver/releases/tag/v1.2.1 windows开启开发者模式,本地开启服务:https://jingyan.baidu.com/article/91f5db1bfc57df5d7e05e31d.html 1.思路 整体思路: 1、封装appdriver服

    2024年02月11日
    浏览(33)
  • Android 天气APP(十四)修复UI显示异常、优化业务代码逻辑、增加详情天气显示

    } public void setTmp_min(String tmp_min) { this.tmp_min = tmp_min; } public String getUv_index() { return uv_index; } public void setUv_index(String uv_index) { this.uv_index = uv_index; } public String getVis() { return vis; } public void setVis(String vis) { this.vis = vis; } public String getWind_deg() { return wind_deg; } public void setWind_deg(String w

    2024年04月25日
    浏览(29)
  • Avalonia 使用EFCore调用SQLite实现Singleton全局注册

    本篇博客是我的开源项目TerraMours.Chat.Ava的更新的记录分享,本次更新使用 EntityFrameWork Core 调用SQLite,实现数据的本地化和查询的优化,删除了 dbpross 类(直接调用SQLite的操作类)。大大提高了代码的简洁度和易读性。通过全局注册的 ChatDbcontext 对象,是操作数据库变的非常

    2024年02月16日
    浏览(22)
  • 【Android】为什么在子线程中更新UI不会抛出异常

    转载请注明来源:https://blog.csdn.net/devnn/article/details/135638486 前言 众所周知,Android App在子线程中是不允许更新UI的,否则会抛出异常: android.view.ViewRootImpl$CalledFromWrongThreadException: Only the original thread that created a view hierarchy can touch its views. 详细异常信息见下图 View的绘制是在 V

    2024年01月18日
    浏览(35)
  • 【C++】异常处理 ① ( 异常概念引入 | 抛出异常语法 | 捕获异常语法 | 异常捕获流程 | 异常处理代码示例 )

    异常是一种 特殊的程序流控制机制 , 用于处理程序中可能出现的错误或异常情况 ; 当程序执行错误时 , 由 throw 抛出异常 , 并即跳转到相应的异常处理程序中 ; 如果没有适当的异常处理程序处理该异常 , 程序会崩溃终止 ; 异常与函数对比 : 函数 是一种 以 栈结构 展开的

    2024年02月04日
    浏览(39)
  • Avalonia的UI组件

    Avalonia是一个强大的跨平台UI框架,允许开发者构建丰富的桌面应用程序。 它提供了众多UI组件、灵活的布局系统、可定制的样式以及事件处理机制。 在这篇博客中,我们将详细解析Avalonia的UI组件、UI组件的生命周期、布局、样式和事件处理。 一、UI组件 Avalonia提供了丰富的

    2024年04月08日
    浏览(28)
  • Avalonia UI 简介

    Avalonia是一个跨平台的.NET框架,用于构建漂亮、现代的图形用户界面(GUI)。使用Avalonia,您可以从单个代码库创建适用于Windows、macOS、 Linux、iOS、Android和Web Assembly的原生应用程序。 Avalonia兼容所有支持.NET Standard 2.0的平台。 Avalonia官方支持下列平台: Windows 8 及更高版本(虽

    2024年02月12日
    浏览(27)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包