应用程序在Invoke上处于永久等待状态
本文关键字:于永久 等待状态 Invoke 应用程序 | 更新日期: 2023-09-27 18:21:58
我在应用程序的主线程中调用一些图形方法时遇到问题。我正在使用SlimDX在窗口的控件中进行渲染。使用形式Invoke
在主线程im中执行图形代码。通常这不会有任何问题,但有时(没有固定的时间间隔)应用程序冻结,调试器告诉我应用程序处于等待状态。
代码如下:
public void CallOnThread(Action action)
{
if (mWindow.InvokeRequired)
action();
else
mWindow.Invoke(action);
}
窗口(System.Windows.Forms.Fom
)使用SlimDXs MessagePump.Run
运行。
我看到过其他帖子中建议使用Dispatcher.Run
,但这实际上只是阻止了整个线程不运行任何渲染。
这种行为的原因是什么?
感谢和问候
在这种情况下,答案只是倒置的if语句。
public void CallOnThread(Action action)
{
if (!mWindow.InvokeRequired)
action();
else
mWindow.Invoke(action);
}