У меня проблема с вызовом некоторых графических методов в основном потоке моего приложения.Я использую 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
, но на самом деле это просто блокирует весь поток, не выполняющий никакой визуализации.
В чем причина такого поведения?
Спасибо и привет