Доступ к control'у из другого потока.
От: lexander_t  
Дата: 30.08.07 17:26
Оценка:
Функция, запущенная в отдельном потоке, должна писать информацию в TextBox.
Пишу в ней:

MyTextBox.Text+="Some text";


Программа запускается нормально, но при запуске потока получаю окошко "An unhandled exception of type 'System.InvalidOperationException' occurred in System.Windows.Forms.dll". В дополнительной информации сказано, что "Cross-thread operation not valid: Control 'MyTextBox' accessed from a thread other than the thread it was created on."
lock и т.п. не помогает.
Все примеры по потокам, которые удалось найти — консольные, там такого нет.

03.09.07 17:55: Перенесено модератором из '.NET' — AndrewVK
Re: Доступ к control'у из другого потока.
От: lexander_t  
Дата: 30.08.07 18:08
Оценка:
Вопрос снят — если использовать this.Invoke, всё работает.
Хорошая статья по теме: http://www.gotdotnet.ru/LearnDotNet/WinForms/599.aspx
Re[2]: Доступ к control'у из другого потока.
От: R0man Украина  
Дата: 31.08.07 12:52
Оценка:
Здравствуйте, lexander_t, Вы писали:

_>Вопрос снят — если использовать this.Invoke, всё работает.

_>Хорошая статья по теме: http://www.gotdotnet.ru/LearnDotNet/WinForms/599.aspx

Статья старовата будет.

Актуальнее:

    BackgroundWorker
    AsyncOperation
    SynchronizationContext
Re: Доступ к control'у из другого потока.
От: Lloyd Россия  
Дата: 31.08.07 12:56
Оценка:
Здравствуйте, lexander_t, Вы писали:

MyTextBox.Invoke((EventHandler) delegate { MyTextBox.Text+="Some text"; });
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.