You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Avalonia应用遇未处理异常时如何展示信息再退出?

Avalonia未处理异常时如何在退出前显示带阻塞的消息框?

我对WPF和Avalonia了解不深,目前有个需求:希望Avalonia应用抛出未处理异常时,在退出前向用户展示信息(比如问题反馈链接),优先用消息框实现,其他方案也可接受但消息框是最优选择。

核心问题在于:Avalonia的消息框(比如MessageBox.Avalonia)需要依托窗口,而且必须等待用户关闭消息框后再退出程序。WPF里有无需窗口的MessageBox.Show()可以阻塞等待,但Avalonia没有这个方法。


尝试过的方案及问题

全局Try-Catch

[STAThread]
public static void Main(string[] args) {
    try
    {
        BuildAvaloniaApp().StartWithClassicDesktopLifetime(args);
    }
    catch (Exception ex)
    {
        ExceptionDispatchInfo.Capture(ex).Throw();
    }
}

这个方案理论可行,但需要获取窗口实例,暂时没搞定所以放弃了。

AppDomain.CurrentDomain.UnhandledException

public partial class App : Application
{
    public override void Initialize()
    {
        AppDomain.CurrentDomain.UnhandledException += (s, e) =>
        {
            // 此处无法正确显示阻塞的消息框
        };
    }

    // ...
}

这个方案同样需要窗口实例,即便用MessageBoxManager.GetMessageBoxStandard(...).Show(),也不会阻塞代码,程序会直接退出,用户看不到弹窗。


内容的提问来源于stack exchange,提问作者TNTzx

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.30 08:12:44