Единственное, что я могу объяснить, это то, что вы выполняете работу в потоке пользовательского интерфейса.Это предотвратит перерисовку диспетчера, пока ваша работа не будет завершена.Передаваемая в Invoke работа помещается в очередь событий, что означает, что она будет выполняться в режиме ожидания.
Правильный способ исправить это - выполнить работу в отдельном потоке.Если вы ищете обходные пути, посмотрите здесь .Ссылка: MSDN
РЕДАКТИРОВАТЬ: Есть много способов выполнить работу в другом потоке.Читайте о BackgroundWorker, ThreadPool, Task Parallell Library, потоках.:) Вот действительно простой способ выполнить работу в фоновом потоке:
System.Threading.ThreadPool.QueueUserWorkItem( state =>
{
Dispatcher.Invoke((Action<string>)SetInfoText, "Start Parsing");
System.Threading.Thread.Sleep(5000); // Simulate work
Dispatcher.Invoke((Action<string>)SetInfoText, "Parsed");
});