C# Прогресс бар - не могу обернуть голову вокруг него
У меня есть программа, которая просматривает файлы в папке, создает новую папку в другом месте с таким именем, а затем помещает общий файл в эту папку. полоскать повторять, пока мы не закончили с тем, что находится в этой папке (перечислены в списке).
Я решил, что хочу быть модным и иметь индикатор прогресса. Я концептуально понимаю, что я увеличиваю счет на единицу (к listbox.items.count
) для каждой итерации.. которую я кодировал и хорошо работает.
Я также понимаю, что DoWork
Событие - это то, что имеет значение для индикатора выполнения, как мне получить два в меш? Передать ли счетчик DoWork
для каждой итерации?
Я просто пропускаю мост от основного цикла кода до счетчика DoEvents.
1 ответ
Используйте фонового работника, как показано:
BackgroundWorker worker = new BackgroundWorker();
worker.WorkerReportsProgress = true;
worker.DoWork += new DoWorkEventHandler(update_DoWork);
worker.ProgressChanged += new ProgressChangedEventHandler(update_ProgressChanged);
worker.RunWorkerAsync();
Вам нужен ProgressChangedEventHandler. Тогда вам нужно будет использовать ReportProgress, когда вы хотите обновить индикатор выполнения (это будет в методе DoWork). Этот метод вызовет ProgressChangedEventHandler.
int percentProgress = 10;
worker.ReportProgress(percentProgress)
Пример ProgressChangedEventHandler:
private void update_ProgressChanged(object sender, ProgressChangedEventArgs e)
{
progressBar.Value = (e.ProgressPercentage);
}