【发布时间】:2012-01-29 07:39:10
【问题描述】:
我在应用程序的主线程中调用一些图形方法时遇到问题。我使用 SlimDX 在我的窗口控件中进行渲染。使用Invoke 形式在主线程中执行图形代码。通常这可以正常工作,但有时(没有固定的时间间隔)应用程序冻结并且调试器告诉我应用程序处于等待状态。
代码如下:
public void CallOnThread(Action action)
{
if (mWindow.InvokeRequired)
action();
else
mWindow.Invoke(action);
}
窗口(@987654323@)使用 SlimDXs MessagePump.Run 运行。
我看过其他建议 Dispatcher.Run 的帖子,但实际上只是阻塞了整个线程而不运行任何渲染。
这种行为的原因是什么?
感谢和问候
【问题讨论】:
-
您的
if和else子句似乎应该颠倒过来 -
有点尴尬。在使用 System.Windows.Threading.Dispatcher 并使用 Form.Invoke 删除我自己的实现后,我将那个小东西作为一个新错误插入......到目前为止,它似乎可以与反向 if 一起使用。来晚了……