Несколько Progress Bar ов - C#
Формулировка задачи:
Всем привет. У меня есть форма, на которой юзер вводит некое неотрицательное число и, по нажатии на кнопку, появляются Progress Bar'ы в количестве заданном пользователем. Задача состоит в том, что бы поочерёдно "заполнить" эти бары, один за другим. В обработчике кнопки я создаю новый список объектов прогрессбара и заполняю его новыми объектами. Потом обновляю форму и в цикле вызываю метод, который "заполняет" бар, номер которого я отдаю ему в аргументе.
Проблема в том, что каждый бар как-бы не выполняет последний шаг, оставаясь незаполненным до конца. Полностью все бары заполняются одновременно в конце работы цикла и метода.
Вот код:
Не могу понять в чём дело, может есть у кого какие-то мысли?
List<ProgressBar> progressBarList; public Form1() { InitializeComponent(); } private void startButton_Click(object sender, EventArgs e) { int controlCount = int.Parse(processCountTB.Text); progressBarList = new List<ProgressBar>(controlCount); Random rnd = new Random(System.DateTime.Today.Millisecond); ProgressBar newProgressBar; for (int i = 0; i < controlCount; i++) { newProgressBar = new ProgressBar(); newProgressBar.Location = new Point(10, (i + 1) * 40); newProgressBar.Visible = true; newProgressBar.Height = 20; newProgressBar.Width = 200; newProgressBar.Minimum = 0; newProgressBar.Maximum = rnd.Next(0, 100); newProgressBar.Step = 5; Controls.Add(newProgressBar); newProgressBar.Show(); progressBarList.Add(newProgressBar); } this.Refresh(); int curProcess = 0; while (curProcess < controlCount) { runProcess(curProcess); curProcess++; } } public void runProcess(int curProcess) { do { System.Threading.Thread.Sleep(100); progressBarList[curProcess].PerformStep(); } while (progressBarList[curProcess].Value < progressBarList[curProcess].Maximum); }
Решение задачи: «Несколько Progress Bar ов»
textual
Листинг программы
ThreadPool.QueueUserWorkItem( unused => { int curProcess = 0; while (curProcess < controlCount) { runProcess(curProcess); curProcess++; } });
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д