«Правильный» способ использовать индикатор выполнения для операции, которая займет неопределенное время, - установить его в режим Marquee.Это показывает полосу с анимированным эффектом «блеска», чтобы показать, что что-то происходит, но не показывает фактическую шкалу прогресса (так как вы не знаете, сколько времени это займет, вы не можете оценить процент выполнения).После подключения вы можете установить для Value
индикатора выполнения значение Max
, чтобы оно переместилось на 100%.
В некоторых версиях IE использовался альтернативный подход, в то время какзагрузка веб-страниц.Это показало индикатор выполнения, который медленно увеличивался до 100% в течение длительного периода (заранее определенного периода времени, достаточного для охвата сценария наихудшего случая - например, в вашем случае вы можете выбрать 30 секунд, поскольку это часто период ожидания, используемый для сбоя соединениятем не мение).Когда соединение наконец установлено, вы повышаете планку до 100%.Это создает впечатление прогресса, достигнутого в то время, как вы ожидаете, и если ваша оценка сценария наихудшего случая является разумной, это даст хорошие результаты.
Однако, обратите внимание , что индикаторы выполнения .net не сразу переходят к новому значению - они анимируются так, чтобы «расти» в направлении запрошенного значения, поэтому, если оно должно перейти от 0% до 100%, потребуется секундаили два, прежде чем он на самом деле отображает 100%.Это может означать, что (например) ваше окно закрывается, в то время как индикатор выполнения показывает только значение, подобное 20%, что очень раздражает, так как заставляет пользователя думать, что оно каким-то образом не удалось.Для этого есть два решения:
1) Заставьте ваше приложение приостановить работу (например, «Спите») на «достаточно длительный период», чтобы вы были уверены, что индикатор выполнения достигнет 100%.Это добавляет дополнительную задержку в несколько секунд к концу вашей операции, и необходимое время может быть довольно непредсказуемым, поэтому это не очень хорошее решение, особенно если выборка из базы данных часто быстрая.
2) Принудительноиндикатор выполнения «прыгает» на 100%, а не медленно растет к 100%.Вы можете сделать это, установив Value = Max; Value = Max-1; Value = Max
.Когда индикатор выполнения запрашивается «назад» таким образом (до Max-1), он не анимируется, а немедленно обновляется, показывая требуемое значение.