Выполнение длительных операций в отдельном потоке с отображением этапов работы пользователю - C#
Формулировка задачи:
Например есть код:
Что я ожидаю: в листбоксе появляется цифра 1, далее идет подключение к фтп, там выполняются необходимые действия, по окончании в листбоксе появляется цифра 2.
Что я получаю: идет подключение к фтп, там выполняются необходимые действия, по окончании в листбоксе появляется цифра 1 и сразу же цифра 2.
Вместо работы с фтп, конечно, могут быть любые другие действия, выполнение которых требует время.
Как в данном случае поступают правильные программисты?
private void button1_Click(object sender, EventArgs e) { listBox1.Items.Add("1"); FtpWebRequest request = (FtpWebRequest)WebRequest.Create("ftp://127.0.0.1/123.txt"); request.Method = WebRequestMethods.Ftp.DeleteFile; FtpWebResponse response = (FtpWebResponse)request.GetResponse(); listBox1.Items.Add("2"); }
Решение задачи: «Выполнение длительных операций в отдельном потоке с отображением этапов работы пользователю»
textual
Листинг программы
BackgroundWorker bw = new System.ComponentModel.BackgroundWorker(); bw.WorkerReportsProgress = true; bw.DoWork += (s, e)=>{for(int i=2; i<100;i++) { Thread.Sleep(500); (s as BackgroundWorker).ReportProgress(i);}}; bw.ProgressChanged += (ss, ee)=> label1.Invoke(new Action<int>(value=>label1.Value = value), ee.ProgressPercentage);
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д