如何使用 WinUI 3 在 .NET MAUI 中针对全局未处理异常在 UI 线程上显示用户对话框?

问题描述 投票:0回答:1

我正在将使用 UWP 的 Xamarin.Forms 项目迁移到使用 WinUI3(多项目应用程序)的 .NET MAUI。

我需要在我的 MAUI 项目中使用 WinUI 3 实现类似的全局异常处理逻辑。虽然我能够在发生未处理的异常时触发该方法,但在特定页面的 UI 线程顶部显示一个用户对话框,其中发生的问题似乎在 WinUI 3 中不起作用。

在我的 Xamarin.Forms 项目中,我通过在 App.xaml.cs 中使用以下代码记录全局未处理异常并在当前页面上显示对话框来处理全局未处理异常:

Application.Current.UnhandledException += All_UnhandledException;

private async void All_UnhandledException(对象发送者,Windows.UI.Xaml.UnhandledExceptionEventArgs e) { 尝试 { var 异常 = e.Exception; var crashLog =“未处理的异常|消息:”+Exception.Message+ " | 目标方法:" + 异常.TargetSite.Name + " | 目标类:" + exception.TargetSite.DeclaringType.FullName;

    Log.Fatal(crashLog, exception);

    e.Handled = true;

    await CoreApplication.MainView.CoreWindow.Dispatcher.RunAsync(CoreDispatcherPriority.Normal,
      async () =>
      {
          var showDialog = new MessageDialog("Caught the unhandled exception");
          await showDialog.ShowAsync();
      });
}
catch (Exception ex)
{                
    Log.Fatal($"Error while handling Unhandled exception: {ex.Message}");                    
}

}

如何在使用 WinUI 3 的 .NET MAUI 项目中实现此目标?任何指导或示例代码将不胜感激。

exception maui winui-3 maui-windows uncaughtexceptionhandler
1个回答
0
投票

使用ContentDialog控件。

想要了解更多, 请参阅此页面了解如何使用 ContentDialog

此外,您需要使用 async 和 wait 来实现此目的。

© www.soinside.com 2019 - 2024. All rights reserved.