我有一个非UI线程,需要在其上发送消息。
通常的方法是在我线程的线程proc中调用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);
}
}
此代码有效,并允许调度程序在发生异常后继续泵送消息。
有人知道这种方法有潜在的问题吗?
最佳答案
我发现在与ui线程一起使用dispatcherframe时可能会遇到一些问题-例如焦点问题-我认为您的情况会很好。
您是否尝试过以下方法:
Application.DispatcherUnhandledException
要么
Dispatcher.UnhandledException
您也可以尝试将其设置为Handled = true以使其继续。
关于wpf - Dispatcher.Run与Dispatcher.PushFrame,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/5697667/