.net statusstrip индикатор выполнения запуска - PullRequest
0 голосов
/ 02 декабря 2011

У меня есть функция разбора, она разбирает файл и занимает много времени.Я хочу показать индикатор выполнения, пока функция разбирает файл.Я добавляю toolstripprogressbar и устанавливаю его свойства.Однако я не знаю, как они работают синхронно.

Я хочу сделать что-то вроде этого:

// progressBar start progress
parseFile();
// progressBar finish progress

Я искал об этом, для этого используются цикл и поток, но онине полезно для меня.Как я могу это сделать?

Ответы [ 2 ]

4 голосов
/ 02 декабря 2011

Вам действительно нужно запустить длительную операцию в фоновом потоке, который может периодически сообщать в поток графического интерфейса о том, как он работает (и, в процессе, обновлять индикатор выполнения).

Iпризываю вас прочитать о Background Worker, здесь http://www.dotnetperls.com/backgroundworker

MSDN Страница здесь: http://msdn.microsoft.com/en-us/library/8xs8549b.aspx

Вы также можете увидеть очень похожий вопрос SO здесь: C # Winform ProgressBarи BackgroundWorker

1 голос
/ 02 декабря 2011

Если вы хотите показать прогресс, вам нужно как-то разделить ваш длинный процесс на этапы или интервалы обработанных данных - и увеличить позицию индикатора выполнения после обработки этапа / интервала eash.

Пример для 3-х этапов: Установите максимальное значение ProgressBar на 3. Этап 1) Открытие и чтение файла в память - установите progressBar.Value в 1 после завершения этого Этап 2) Анализ файла - установите для параметра progressBar.Value значение 2 после этого. Этап 3) Дополнительная обработка? - после этого установите progressBar.Value на 3 = Max = процесс завершен.

Пример размера файла: Представим, что вы можете измерить, какую часть файла вы уже проанализировали, в байтах. Затем сначала вы устанавливаете progressBar.Max на размер файла в байтах. Затем после каждого обработанного блока байтов из файла вы должны установить progressBar.Value в число обработанных байтов.

Второй подход, как правило, более точный, и progressBar работает гораздо более плавно, но его не всегда возможно использовать.

...