Выполнение длительных операций в отдельном потоке с отображением этапов работы пользователю - C#

Узнай цену своей работы

Формулировка задачи:

Например есть код:
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");
}
Что я ожидаю: в листбоксе появляется цифра 1, далее идет подключение к фтп, там выполняются необходимые действия, по окончании в листбоксе появляется цифра 2. Что я получаю: идет подключение к фтп, там выполняются необходимые действия, по окончании в листбоксе появляется цифра 1 и сразу же цифра 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);

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

7   голосов , оценка 4.143 из 5
Похожие ответы