我正试图使用App.DispatcherUnhandledException事件来处理任何后台线程异常,因为我正在全面捕获它们并将它们写入日志。我试过在下面这样做,但事件没有引起,我的应用程序也崩溃了。
public class MainWindow : Window
{
public MainWindow()
{
client = new Client();
client.OnSocketError += (s, e) => Dispatcher.Invoke(() => throw e.Exception); // re-throwing
client.Connect("192.168.1.5", "1234");
}
}
是否可以将异常重新抛出到主线程?
请注意,从主线程引发异常时引发了事件。
我替换了这一行:
Dispatcher.Invoke(() => throw e.Exception);
有了这个:
Dispatcher.BeginInvoke(new Action(() => throw e.Exception));
现在它工作正常。
我想原因是Invoke方法阻止了EventHandler,而现在BeginInvoke法没有。