WPF: есть ли простой способ создать окно прогресса? - PullRequest
1 голос
/ 17 февраля 2010

Я попытался создать его, но BackgroundWorker в Window1 не смог получить доступ к ProgressBar в Window2 после активации reportProgress, потому что «Вызывающий поток не может получить доступ к этому объекту, потому что другой поток принадлежит ему». *

Кажется, есть модель потока более низкого уровня, которую я мог бы использовать, но она также кажется намного более сложной.

Ответы [ 3 ]

1 голос
/ 17 февраля 2010

В WPF элементы управления и свойства пользовательского интерфейса могут быть активированы только из потока пользовательского интерфейса. Чтобы изменить значение индикатора выполнения из другого потока, вы можете добавить команду в очередь диспетчера потока GUI. Вы можете сделать это, передав делегата методу Dispatcher.Invoke(). Подробнее см. Статью http://msdn.microsoft.com/en-us/magazine/cc163328.aspx.

1 голос
/ 17 февраля 2010

Вам просто нужно получить диспетчер ProgressBar.

Вы можете получить доступ к ProgressBar с помощью:

Window2.prograssbar.Dispatcher.Invoke(
    () => /*the code for modifying the progressbar*/ );
0 голосов
/ 17 февраля 2010

Вам нужно посмотреть на Делегатов

...