Индикатор прогресса C # не синхронизирован с загрузкой (класс WebClient) - PullRequest
3 голосов
/ 11 июня 2010

Я кодирую систему, в которой есть небольшой модуль FTP, он вообще не является основной функцией, но необходим ...

Я должен связать индикатор выполнения с событием класса WebClient DownloadProgressChangedEventHandler и AsyncCompletedEventHandler,инкремент индикатора выполнения в порядке, и ASyncCompletedEventHandler запускает MessageBox (как и предполагалось), проблема в том, что индикатор выполнения загружается слишком медленно ...

проблема:

Мой всплывающий ящик MessageBox в100% (запускается обработчиком событий), НО, когда всплывающее окно MessageBox отображает мой индикатор выполнения только на + -80% (но значение .VALUE действительно равно 100), первое, что я сделал, было то, что они добавили «плавный» эффектв Windows Vista, которые замедляют индикатор выполнения относительно его истинного значения.

Если у кого-то из вас возникла такая же проблема, спасибо за вашу помощь.

Ответы [ 3 ]

1 голос
/ 11 июня 2010

Для тех из вас, кто хочет знать, Vista фактически добавляет «сглаживание» к изменению полосы загрузки, это похоже на «эффект скручивания» Flash.

Я пробовал в Windows XP, и планка достигает 100% точно, когда значение достигает 100. В Vista похоже, что они решили, что «загрузка» будет разделена на задержку X.

0 голосов
/ 11 июня 2010

Почему бы просто не установить значение индикатора выполнения равным 100% в том же обработчике события DownloadProgressChangedEventHandler, который отображает окно сообщения?

0 голосов
/ 11 июня 2010

Прежде чем отобразить окно сообщения, вызовите Application.DoEvents () , чтобы принудительно обработать все ожидающие сообщения Windows в очереди. Ваш индикатор выполнения, вероятно, не получает возможности нарисовать себя в последний раз, прежде чем отобразится окно сообщения.

...