我有一个非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);
}
}此代码可以工作,并允许调度程序在异常后继续发送消息。
有没有人知道这种方法有什么潜在的问题?
发布于 2011-04-18 16:25:27
我发现在UI线程中使用dispatcherframe可能会带来一些问题--例如焦点问题--我认为你的场景应该没问题。
你有没有尝试过用以下方法来捕捉它:
Application.DispatcherUnhandledException
或
Dispatcher.UnhandledException
您也可以尝试这样做,并设置Handled=true使其继续运行。
https://stackoverflow.com/questions/5697667
复制相似问题