Я создаю сервер и клиент для чата, который работает на Tcp и Sockets, я хочу, чтобы клиент обрабатывал несколько соединений (для серверов), поэтому я создал класс под названием «Клиент» для управления соединением асинхронного, так что я могу запустить несколько экземпляров одновременно, как:Обновление GUI из другого класса в vb.net
Dim ConnectionToServer1 as new Client
Dim ConnectionToServer2 as new Client
Поскольку это асинхронное, когда происходит «соединение» принимает сообщение, оно генерирует событие (AsyncCallback), где Я могу преобразовать полученные байты в строку.
Проблема: я попытался установить эту строку в RichTextBox в моей форме изнутри класса Client, но ничего не происходит, я попытался создать делегат в коде формы, но ничего не работает, только путь, которым я смог поместить полученное сообщение в RichTextBox, создав общедоступную переменную, называемую LastMessage в классе Client, где хранится последнее сообщение (каждый раз, когда он получает сообщение, sub переопределяет строку), а затем запускает поток созданный формой, которая продолжает проверять данные (поскольку поток был создан формой, к которой у него есть доступ к элементам управления, включая RichTextBox, правильно?) Хотя я нахожу это немного неуклюжим, есть ли другой способ (через делегатов может быть?) Я могу это сделать?
Вот код: класс Клиент: http://pastebin.com/GF9um8Ss Код формы: http://pastebin.com/xW7mDj8j
Спасибо вам столько Формы вашего времени! – user26302
Нет проблем. Если мой ответ помог вам решить вашу проблему, отметьте ее как принятую, так что будущие исследователи знают, что это было полезно. – Tim