2013-07-10 3 views
0

Почему мое действие Dispatcher.Invoke не отображается мгновенно? Это мне пристанетWPF - Dispatcher.Invoke delay

 Dispatcher.Invoke((Action)(() => busyIndicator1.BusyContent = loaderComment), System.Windows.Threading.DispatcherPriority.Send); 

     var sw = new Stopwatch(); 

     sw.Start(); 
     var newItems = func.Invoke(Operation); 
     sw.Stop(); 

Мое новое значение busyIndicator1.BusyContent визуализируется только после того, как мой Func FUNC завершает выполнение, и FUNC занимает некоторое время. Я уже установил низкий приоритет для всех моих других вызовов Dispatcher.BeginInvoke.

ответ

1

Вы блокируете поток, ответственный за операцию, которую вы отправляете с вызовом функции. Очередь диспетчера (по крайней мере, часть рендеринга GUI) не обрабатывается до тех пор, пока вы не пропустите поток снова (т. Е. Обработчик метода/события, который выйдет).

Выполнение вашей функции в другом потоке.

+0

Я пробовал это и не работал новый Task (() => вызов диспетчера) .Start(); –

+0

Нет, 'func.Invoke', а не настройка индикатора занятости ... –

+0

Теперь я попробовал это с func.Invoke, но все еще не работает –

Смежные вопросы