DispatcherUnhandledException 事件中未捕获外部线程异常

External thread exception doesn't catched in the DispatcherUnhandledException event

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