![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
Пользователь
Регистрация: 31.10.2009
Сообщений: 27
|
![]()
Ничего не выходит, перепробовал уже всё что только прочитал.
Ситуация такая, в листбокс нужно добоавить текст. Создал делегата delegate void AddTextToTListBox(string text); Далее по наступлении события пытаюсь добавить текст в листбокс: Код:
Пробовал вместо AddTextToTextBox d = new AddTextToTextBox(msg_OnSendChatMess age); писать AddTextToTextBox d = new AddTextToTextBox(AddText); а далее Код:
Буду благодарен за подсказку. |
![]() |
![]() |
![]() |
#2 |
Участник клуба
Регистрация: 03.05.2007
Сообщений: 1,189
|
![]()
1. Invoke в другом Invoke - плохо. Достаточно Invoke в msg_OnSendChatMessage.
2. Код:
Код:
|
![]() |
![]() |
![]() |
#3 | ||
Пользователь
Регистрация: 31.10.2009
Сообщений: 27
|
![]() Цитата:
например вот такой вариант: Код:
Цитата:
всё началось с ошибки Cross-thread operation not valid: Control 'listBox1' accessed from a thread other than the thread it was created on. Сейчас, добавив InvokeRequired, просто виснет программа, не отвечая на запросы. После строки this.Invoke(d, new object[] { message }); |
||
![]() |
![]() |
![]() |
#4 |
Форумчанин
Регистрация: 25.09.2009
Сообщений: 525
|
![]() Код:
|
![]() |
![]() |
![]() |
#5 | |
Пользователь
Регистрация: 31.10.2009
Сообщений: 27
|
![]() Цитата:
попробовал добавить проверку: Код:
|
|
![]() |
![]() |
![]() |
#6 |
Пользователь
Регистрация: 31.10.2009
Сообщений: 27
|
![]()
я уже думаю может тогда просто строку добавлять в какую-то переменную, и просто по таймеру обновлять листбокс каждую секунду. но не хотелось бы так делать, это грабли какие-то
п.с. прошу прощения за 2 сообщения подряд - думал оно прикрепится к первому, а удалить не смог |
![]() |
![]() |
![]() |
#7 |
Участник клуба
Регистрация: 03.05.2007
Сообщений: 1,189
|
![]()
Попробуй через делегат:
Код:
|
![]() |
![]() |
![]() |
#8 |
Пользователь
Регистрация: 31.10.2009
Сообщений: 27
|
![]()
да не, то же самое.
а у меня вопрос, поставил BeginInvoke вместо Invoke - работает, правда в нужный метод не попадает. Код:
Код:
|
![]() |
![]() |
![]() |
#9 |
Участник клуба
Регистрация: 03.05.2007
Сообщений: 1,189
|
![]()
Ждет очереди, мне кажется проблема в потоках. Опиши как они вызываются.
|
![]() |
![]() |
![]() |
#10 |
Пользователь
Регистрация: 31.10.2009
Сообщений: 27
|
![]()
ситуация такая, что я на сервер отправляю строку, и должен постоянно получать CallBack с ответом, чтобы этот ответ вносить в листбокс.
поэтому в классе на сервере есть такой метод: Код:
клиент же её получает при помощи такого делегата: Код:
Код:
Cross-thread operation not valid: Control 'listBox1' accessed from a thread other than the thread it was created on. Вот такие пироги. |
![]() |
![]() |
![]() |
|
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Ошибка Unable to invoke Code.... | sisofcase | Общие вопросы Delphi | 16 | 14.07.2011 20:02 |
Доступ из другого класса | KipZ | Windows Forms | 1 | 06.02.2011 15:22 |
Как узнать номер потока из самого потока? | GaMeSTeR | Помощь студентам | 0 | 03.12.2010 09:50 |
Доступ к функциям и структурам из потока | MAIN_ELF | Общие вопросы C/C++ | 2 | 04.10.2010 15:08 |
директивы в MASM - INVOKE, PROTO, LOCAL | fermat_c | Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM | 3 | 05.04.2008 18:25 |