Возврат статуса из Task - C#

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

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

Привет! В общем суть проблемы: Моё приложение слишком долго выполняется, и поэтому решил попробовать вынести код в Task. Так вот во время выполнения Task он должен оповещать о своем прогрессе изменяя положение в ProgressBar и отображая в Label что он делает сейчас. Так вот столкнулся с тем, что если я напрямую из Task'а буду обновлять ProgressBar и Label, то форма будет провисать. Как правильно передавать статус из Task'а на форму? Зарисовка моей проблемы:
        async Task thr2()
        {
            for (int i = 0; ; i++)
            {
                toolStripProgressBar1.Value = i; // из-за всех этих манипуляций форма зависает
                toolStripStatusLabel1.Text = i.ToString();
                Thread.Sleep(500);
            }
        }
 
        private async void button1_ClickAsync(object sender, EventArgs e)
        {
            toolStripProgressBar1.Maximum = int.MaxValue;
            thr2();
        }

Решение задачи: «Возврат статуса из Task»

textual
Листинг программы
Task.Run(thr2);

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


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

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

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