wpf c # обновление окна статуса - PullRequest
0 голосов
/ 08 марта 2010

Я пытаюсь создать окно состояния, содержимое которого (текстовое поле) должно измениться при длительной операции. Это окно состояния вызывается и обновляется из основного приложения. К сожалению, контент обновляется только по окончании операции. Я использую VS2008, C # и WPF.

Спасибо.

Ответы [ 3 ]

3 голосов
/ 08 марта 2010

Это еще один ответ для лучшего форматирования:

Код должен выглядеть примерно так:

BackgroundWorker bgWorker = new BackgroundWorker();

bgWorker.DoWork += new DoWorkEventHandler(bgWorker_DoWork);

bgWorker.RunWorkerCompleted += new 
    RunWorkerCompletedEventHandler(bgWorker_RunWorkerCompleted);

bgWorker.RunWorkerAsync();

В методе bgWorker_DoWork вызовите "Dispatcher.Invoke" (или "Dispatcher.BeginInvoke", зависит от обстоятельств), и делегат для вызова может обновить ваше текстовое поле (потому что оно находится в той же теме, что и текстовое поле) .

1 голос
/ 08 марта 2010

Как насчет выполнения длительной операции в потоке BackgroundWorker и периодического уведомления содержимого с помощью Dispatcher? Это придаст вашему интерфейсу отзывчивое, но прогрессивное чувство.

1 голос
/ 08 марта 2010

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...