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);
        }
Другие вопросы по тегам