WPF Animated ProgressBar в приложении WinForms - PullRequest
1 голос
/ 12 декабря 2011

У меня есть приложение WinForms, и я хотел добавить несколько хороших элементов управления WPF, один из которых - «неопределенный» индикатор выполнения ... который просто анимируется, пока я не скажу ему остановиться.

Я сделалэто и ломало мне голову над тем, почему он не анимировался (изменяя значение индикатора выполнения).

В конце концов я попытался показать мою форму (содержащую ElementHost) модально, и эй presto, она анимирует, но я хочу показать форму немодально, так как я хочу продолжить обработку за кулисами.

Есть ли какая-то настройка, которая сообщает окну ElementHost продолжать "анимацию"?

Спасибо, Рич.

Ответы [ 2 ]

0 голосов
/ 25 января 2012

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

0 голосов
/ 13 декабря 2011

Есть много способов сделать это, самый простой из них - использовать фонового работника для длительной задачи.Фоновый работник имеет событие, чтобы сообщить о прогрессе.Обработайте это событие и в обработчике измените значение вашего индикатора выполнения.Простая анимация в главном потоке, в то же время выполняя работу в основном потоке, не будет работать правильно ...
Еще один подход, который вы можете попробовать (хотя это не то, что я бы порекомендовал для здорового приложения), заключается в реализации DoEvents.и вызовите его в главном потоке, если вы хотите, чтобы индикатор выполнения обновлялся ... Вот ссылка для реализации DoEvents:
MSDN DoEvents sugestion
Я бы настоятельно рекомендовал первыйподход хотя

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