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
相关产品推荐
相关产品推荐

