![]() |
Модераторы: gambit, Partizan |
![]() ![]() ![]() |
|
DenwerD |
|
|||
Новичок Профиль Группа: Участник Сообщений: 21 Регистрация: 27.3.2008 Репутация: нет Всего: нет |
Здравствуйте, господа.
Возникла проблема, надеюсь поможете разобраться. Исходные данные: Есть Windows Форма, на ней ListBox. Есть приложение UdpServer (собственный класс). UdpServer исполняется в главном потоке в месте с формой. UdpServer агрегирует несколько объектов класса UdpListener у которых есть метод Start. Метод Start каждого объекта UdpListener исполняется в отдельном потоке, которые запускает UdpServer. При вызове UdpListener.Start() генерируется событие onStart(string msg), обработчиком которого является метод UdpServer.item_Start(msg), который в свою очередь генерирует событие onServerItemStart (msg) обработчиком которого является метод формы Form1.onUdpServerItemStart(msg). onUdpServerItemStart(msg) - должен тупо добавлять в ListBox строку msg и все, но когда он пытается сделать - возникает исключение, цитирую : "Cross-thread operation not valid: Control 'logBox' accessed from a thread other than the thread it was created on." Вопрос: 1. Почему так происходит т.е. Что я не верно длаю? 2. Как можно этого исбежать? Заранее благодарю. |
|||
|
||||
amarenkov |
|
|||
Бывалый ![]() Профиль Группа: Участник Сообщений: 183 Регистрация: 21.2.2008 Где: Воронеж Репутация: нет Всего: нет |
DenwerD(, поищи на слово Invoke(). Ты должен менять контролы в том потоке, в котором они созданы. Об этом и ошибка. У каждого контрола есть метод Invoke(), выполняющий аргумент в потоке-создателе компонента.
P.S. Щас тебя заклюют сообщениями: "Надо поиском пользоваться" ![]() |
|||
|
||||
DenwerD |
|
|||
Новичок Профиль Группа: Участник Сообщений: 21 Регистрация: 27.3.2008 Репутация: нет Всего: нет |
Получается что метод(исполняемый в потоке "a") генерирует событие, а обработчик этого события так же исполнится в этом потоке ("а")? Правильно я понимаю? |
|||
|
||||
DenwerD |
|
|||
Новичок Профиль Группа: Участник Сообщений: 21 Регистрация: 27.3.2008 Репутация: нет Всего: нет |
amarenkov, спасибо тебе за подсказку, проблему решил
|
|||
|
||||
![]() ![]() ![]() |
Прежде чем создать тему, посмотрите сюда: | |
|
Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов. Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :) Так же не забывайте отмечать свой вопрос решенным, если он таковым является :) Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, THandle. |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Разработка Windows Forms | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |