@kosyak_47

Почему я не могу присваивать значения и вызывать методы инструментов ProgressBar и Label в отдельном потоке?

Добрый день.

Есть метод (загрузка фотографий по URL-ссылкам), который я хочу выполнять в отдельном потоке, ибо у меня подвисает прога при каждом обращении по ссылке на сайт. На форму добавил элемент ProgressBar (индикатор выполнения операции), а над ним Label, в котором отображается текущая загружаемая картинка и сколько всего осталось загружать.

Проблема в том, что после захода в поток исполнение стопится на добавлении шага созданного ранее ProgressBar

...
this.progressBar_LoadInfo.PerformStep();
...


C# мне пишет:
System.InvalidOperationException: "Недопустимая операция в нескольких потоках: попытка доступа к элементу управления 'progressBar_LoadInfo' не из того потока, в котором он был создан."

Аналогичная ошибка и на Label

...
this.label_progressBarLoadInfo.Text = "Загрузка файла " + splitUrl[splitUrl.Length - 1] + "      " + (i + 1).ToString() + " из " + data.Count().ToString();
...


С this'ом и без this'а пробовал.

Как мне менять индикатор загрузки и строку состояния вне потока, когда они должны меняться в нем? Наверняка я что то неправильно делаю
  • Вопрос задан
  • 171 просмотр
Решения вопроса 1
firedragon
@firedragon
Не джун-мидл-сеньор, а трус-балбес-бывалый.
Следуйте этой статье и все заработает https://docs.microsoft.com/ru-ru/dotnet/desktop/wi...
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы