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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Многопоточность и компоненты Windows Forms 
:(
    Опции темы
ParaPik
Дата 26.3.2010, 21:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



При разработке программы я столкнулся с такой проблемой: когда я создаю новый поток, который будет обращаться к компоненту формы, у меня вылезает сообщение о том, что я обращаюсь к объекту, который создан в другом потоке.

Например,
Код

void interact()
{
    webBrowser.Navigate("http://www.rambler.ru"); // Вот здесь вылезает эта ошибка!
}

private void button1_Click(object sender, System.EventArgs e)
{
      new Thread(interact).Start();



Конечно, пример не очень. Но он наглядно показывает суть проблемы. В данном коде webBrowser - это объект типа WebBrowser, который создан в главном потоке.

Заранее спасибо за помощь.
PM MAIL   Вверх
azesmcar
Дата 26.3.2010, 21:35 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


uploading...
****


Профиль
Группа: Участник Клуба
Сообщений: 6291
Регистрация: 12.11.2004
Где: Армения

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



ParaPik

Используй InvokeRequired и Invoke, либо можно просто убрать проверку с Control-ов, но это не рекомендуется.

Добавлено через 2 минуты
советую почитать
http://msdn.microsoft.com/en-us/library/ms...28VS.80%29.aspx
PM   Вверх
alexserezhenko
Дата 28.3.2010, 11:13 (ссылка)    | (голосов:2) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



через делегаты это делается.
PM MAIL   Вверх
Dobermann
Дата 28.3.2010, 18:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



webBrowser в делегат засунь...
PM   Вверх
Heinzz
Дата 28.3.2010, 20:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 381
Регистрация: 12.12.2008
Где: .net

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



Код

       void interact()
        {
            if (webBrowser1.InvokeRequired)
            {
                WebDelegate del = new WebDelegate(interact);
                this.Invoke(del);
            }
            else
            {
                webBrowser1.Navigate("http://www.rambler.ru"); // Вот здесь вылезает эта ошибка!
            }
        }
        private delegate void WebDelegate();

        private void button1_Click(object sender, EventArgs e)
        {
            new Thread(interact).Start();
        }




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

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


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

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


 




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


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

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