我有一个非 ui 线程,我需要在该线程上发送消息。
执行此操作的正常方法是在我的线程的线程过程中调用 Dispatcher.Run()
。
我想修改它以使其在处理未处理的异常方面更加健壮。
我的第一个剪辑是:
for (;;)
{
var frame = new DispatcherFrame();
try
{
Dispatcher.PushFrame(frame);
break;
}
catch (Exception e)
{
frame.Continue = false;
Log("ThreadProc caught exception:\n{0}", e);
}
}
此代码有效并允许调度程序在异常发生后继续发送消息。
有人知道这种方法有任何潜在问题吗?
最佳答案
我发现使用 dispatcherframe 在与 ui 线程一起使用时会产生一些问题 - 例如焦点问题 - 我认为你的场景会很好。
你试过用以下方法捕捉它吗:
Application.DispatcherUnhandledException
或
Dispatcher.UnhandledException
您也可以尝试并设置 Handled=true 以使其继续。
关于wpf - Dispatcher.Run 与 Dispatcher.PushFrame,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5697667/