外部线程异常未在调度程序未处理异常事件中捕获



我正试图使用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法没有。

最新更新