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