Индикатор выполнения застревает, потому что вы только вызываете PerformStep
один раз. Когда вы вызываете PerformStep
, значение индикатора выполнения увеличивается на 5 (поскольку вы устанавливаете значение 5).
Чтобы индикатор прогресса перемещался больше, вам нужно чаще звонить PerformStep
.
Например, если у вас есть рабочий рабочий поток, который работает в фоновом режиме, вы хотите, чтобы пользователь получал уведомление о том, сколько времени займет работа. Вы можете позвонить PerformStep
каждый раз, когда вы чувствуете, что хотите показать, что прогресс был достигнут.
Пример кода:
...
progressBar1.Step = 5;
InitTheWork();
progressBar1.PerformStep(); //This increments the pb's value by 5, since property `Step` has been set to 5
DoSomeHeavyWork();
progressBar1.Value += 20; //This increments pb's value by 20
FinalizeWork();
progressBar1.Value = 100; //This fully fills up the progress bar, to signify that the work has been completed.
Вам необходимо запустить PerformStep() в фоновом потоке. –
Приведенный выше код работает, но он выполняет только один шаг, поэтому увеличивается 5 с допустимого диапазона 0-100. Но он действительно движется, что такое точное поведение, попытайтесь описать его как можно лучше. Редактировать: @Garry Vass, почему бы ему не изменить значение индикатора выполнения из текущего потока? –