编辑
这个问题的答案有帮助谢谢我感谢帮助:)但我最终使用:http://code.msdn.microsoft.com/windowsdesktop/Handling-Unhandled-47492d0b#content
原来的问题:
目前我有:
App.xaml中:
<Application x:Class="WpfApplication5.App" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" DispatcherUnhandledException="App_DispatcherUnhandledException" // <---------------- StartupUri="MainWindow.xaml"> <Application.Resources> </Application.Resources> </Application>
App.xaml的代码隐藏
namespace WpfApplication5 { public partial class App : Application { private void App_DispatcherUnhandledException(object sender,DispatcherUnhandledExceptionEventArgs e) { MessageBox.Show("Caught Unhandled Exception!"); } } }
当主线程发生错误时,该解决方案非常有效.现在我的问题是如何能够捕获发生在不同线程上的错误?
换句话说:当我按下这个按钮时,我可以捕获异常:(App_DispatcherUnhandledException被调用!)
private void button1_Click(object sender,RoutedEventArgs e) { int.Parse("lkjdsf"); }
但是我无法捕捉到这个例外:
private void button1_Click(object sender,RoutedEventArgs e) { Task.Factory.StartNew(() => { int.Parse("lkjdsf"); }); }
无论是否在主线程上发生,我将如何捕获所有异常?
解决方法
您可以使用
AppDomain.UnhandledExceptionHandler处理未捕获的异常.