0

我在应用程序的主线程中调用一些图形方法时遇到问题。我使用 SlimDX 在我的窗口控件中进行渲染。使用表单在主线程中执行图形代码Invoke。通常这可以正常工作,但有时(没有固定的时间间隔)应用程序冻结并且调试器告诉我应用程序处于等待状态。

代码如下:

public void CallOnThread(Action action)
{
    if (mWindow.InvokeRequired)
        action();
    else
        mWindow.Invoke(action);
}

窗口 (a System.Windows.Forms.Fom) 使用 SlimDXs 运行MessagePump.Run

我看过其他Dispatcher.Run建议的帖子,但实际上只是阻止了整个线程而不运行任何渲染。

这种行为的原因是什么?

谢谢和问候

4

1 回答 1

0

在这种情况下,答案只是倒置的 if 语句。

public void CallOnThread(Action action)
{
    if (!mWindow.InvokeRequired)
        action();
    else
        mWindow.Invoke(action);
}
于 2012-01-28T23:39:10.990 回答