WPF 重定向在Application_DispatcherUnhandledException
本文关键字:DispatcherUnhandledException Application 重定向 WPF | 更新日期: 2023-09-27 18:36:08
我是WPF的新手,从app.xaml重定向到新窗口时遇到了一些问题.cs将未处理的异常事件调度到新窗口。
基本上,我试图模仿Web应用程序处理错误的方式
- 错误被捕获
- 错误通过埃尔玛记录
- 错误通过电子邮件通过Elmah发送
- 如果日志记录/电子邮件成功,用户将被重定向到错误页面,否则错误将不予处理
我调用的代码是 -
private void Application_DispatcherUnhandledException(object sender,
System.Windows.Threading.DispatcherUnhandledExceptionEventArgs e)
{
..... Processing Code
NavigationService svc = NavigationService.GetNavigationService(this);
svc.Navigate(new DIEM.WindowsApps.DIEMWindows.ErrorWindow());
}
我遇到的问题是,当调用NavigationService.GetNavigationService(this)时,"this"是空的(大概是因为App.xaml.cs不是页面,它继承自Application)。
有什么办法吗?我做错了吗?!
提前谢谢。
使用在应用程序中其他位置使用的相同导航服务。如果它是 AppWindow
,则可以将其另存为 App
类中的属性并访问它:
public AppWindow()
{
((App)Application.Current).AppWindow = this;
}
class App : Application
{
public AppWindow AppWindow { get; set; }
private void Application_DispatcherUnhandledException(object sender,
DispatcherUnhandledExceptionEventArgs e)
{
//..... Processing Code
NavigationService svc = NavigationService.GetNavigationService(AppWindow);
svc.Navigate(new DIEM.WindowsApps.DIEMWindows.ErrorWindow());
}
}