我在应用程序的主线程中调用一些图形方法时遇到问题。我使用SlimDX渲染我的窗口控件。使用表单Invoke
在主线程中执行图形代码。通常这没有任何问题,但有时(没有固定的时间间隔)应用程序冻结,调试器告诉我应用程序处于等待状态。
代码如下:
public void CallOnThread(Action action)
{
if (mWindow.InvokeRequired)
action();
else
mWindow.Invoke(action);
}
使用SlimDXs System.Windows.Forms.Fom
运行窗口(MessagePump.Run
)。
我见过其他帖子,其中Dispatcher.Run
被建议,但实际上只是阻止整个线程没有运行任何渲染。
这种行为的原因是什么?
谢谢和问候
答案 0 :(得分:0)
在这种情况下,答案只是倒置的if语句。
public void CallOnThread(Action action)
{
if (!mWindow.InvokeRequired)
action();
else
mWindow.Invoke(action);
}