У меня есть программа (winform), которая проходит через множество файлов (в области 400 раз) в папке, и чтобы показать, как она работает, я использую индикатор выполнения.информация публикуется в виде списка, если это имеет значение.У меня проблема в том, что когда компьютер работает медленно, я работаю с папками по сети или если это действительно большое количество файлов, ProgressBar просто перестает обновляться.если n выйти из программы, она продолжится и закончится, но индикатор выполнения застревает на каком-то этапе.И затем только показывает, что это завершено (дополнительное примечание: я заметил, что это не просто индикатор выполнения. Иногда это целая форма. Но опять же, когда программа завершена, все в порядке. И пока она работает, вы можете перемещатьформа, просто не взаимодействовать с ней)
Теперь вот, где это становится сложным.Я знаю, что это можно решить с помощью потоков.мне, однако, сказали не использовать это (давайте не будем вдаваться в причину, давайте просто исключим это, глупо это или нет).Я также попытался обновить форму и обновить сам бар.похоже, ничего из этого не работает.это не очень хорошая идея, но даже попробовал. DoEvent, он также не работает
Как я могу получить индикатор выполнения для обновления?какие-нибудь идеи?
вот часть кода, который я использую для индикатора выполнения
//before the loop
progress = iCount1;
progressvalue = 0;
double increment = 100 / (double)progress;
//this is at the end of the loop
progressvalue = progressvalue + increment;
, тогда есть немного кода.некоторые из них, чтобы остановить выход значения за пределы.остальное вообще не связано с индикатором выполнения
edit: o, у меня есть эта 1 переменная.и это в основном проходит через 3 цикла.так что у нас есть один непрерывный бар.не бар, работающий 3 раза
edit: похоже, работает нормально для папки на моем компьютере.но когда он запускается на медленном компьютере или по сети, то именно тогда он делает это
РЕДАКТИРОВАТЬ: я получаю ответы о backgroundworker и потоках.так нет ли способа сделать это без потоков?
Обновление: я наконец убедил своего босса сделать это с backgroundworker.так плохо буду этим заниматься.но на этот вопрос, я думаю, ответ .DoEvent - лучший