应用程序永久等待调用

时间:2012-01-28 23:06:27

标签: c# .net slimdx

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

代码如下:

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

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

我见过其他帖子,其中Dispatcher.Run被建议,但实际上只是阻止整个线程没有运行任何渲染。

这种行为的原因是什么?

谢谢和问候

1 个答案:

答案 0 :(得分:0)

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

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