Модераторы: Partizan, gambit
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> progressBar и backgroundWorker, ошибка доступа к элементу управления 
:(
    Опции темы
falconna
Дата 30.5.2011, 20:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 8
Регистрация: 30.4.2009

Репутация: нет
Всего: нет



Добрый день. Помогите, пожалуйста разобраться с ошибкой.
Есть класс, в котором выполняется длиииинная функция. На время ее выполнения нужно открыть окно формы, в котором бы отображался прогрессбар. То есть: запускается функция - открывается форма с ПБ (style - marquee), функция завершается - форма закрывается.
Делаю так. В своем классе создаю экземпляр формы:

Код

RunLola lola = new RunLola();
lola.backgroundWorker1.DoWork += new System.ComponentModel.DoWorkEventHandler(lola.SetLolasRun); //Подписываемся на обработчик события
lola.ShowDialog();


На форму добавляю progressBar и backgroundWorker, создаю обработчики событий:
Код

private void backgroundWorker1_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e)
        {
            Close();
        }

private void RunLola_Load(object sender, System.EventArgs e)
        {
            backgroundWorker1.RunWorkerAsync();
        }


И туда же пишу функцию управления прогрессбаром.
Код

public void SetLolasRun(object sender, System.ComponentModel.DoWorkEventArgs e)
        {
                progressBar1.Style = ProgressBarStyle.Marquee;
                progressBar1.MarqueeAnimationSpeed = 30;
        }


Выдается ошибка "Недопустимая операция в нескольких потоках: попытка доступа к элементу управления "progressBar1" не из того потока, в котором он был создан."
В потоках я не сильна. В чем суть ошибки в принципе понимаю, но как исправить - не знаю. Если кто знает - подскажите, пожалуйста.
PM MAIL   Вверх
-Mikle-
Дата 31.5.2011, 07:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Невидимка Vingrad'а
***


Профиль
Группа: Экс. модератор
Сообщений: 1672
Регистрация: 22.6.2003
Где: Казахстан, Астана

Репутация: 17
Всего: 59



Привет. Перенеси строки инициализации прогресбара в конструктор RunLola или задай эти значения в дизайнере формы.

Код

// конструктор класса RunLola
public RunLola()
{
    InitializeComponent();

    progressBar1.Style = ProgressBarStyle.Marquee;
    progressBar1.MarqueeAnimationSpeed = 30;
}



--------------------
Если тебе плюют в спину, значит ты впереди...
PM   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
mr.DUDA
THandle

Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов.
Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :)
Так же не забывайте отмечать свой вопрос решенным, если он таковым является :)


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, THandle.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Общие вопросы по .NET и C# | Следующая тема »


 




[ Время генерации скрипта: 0.0404 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.