2010-03-27 4 views
0

Я написал многопоточный сервер, который использует tcplistener и класс обработчика клиента, который управляет вводом и выводом. У меня также есть клиент чата GUI. Клиент чата отлично работает, и консольная версия сервера также работает хорошо.C# GUI, изменяющий список из другого класса

У меня есть метод start() в частичном (?) Классе формы, который я запускаю из нового потока, когда я нажимаю кнопку, которая запускает прослушиватель TCP и выполняет цикл и принимает запросы сокетов. Для каждого запроса создается новый объект ClientHandler и сокет передается этому объекту перед использованием в новом потоке обработчика.

ClientHandler - это другой класс формы, и у меня возникают реальные проблемы с записью данных в Listbox в классе Form из класса ClientHandler. Я пробовал несколько разных способов сделать это, но ни один из них не работает, поскольку они связаны с созданием нового класса формы в ClientHandler.

Любая помощь или совет по тому, что я должен читать, чтобы помочь мне, были бы очень благодарны.

+0

Относительно вашего вопросительного знака к частичным: форма частичная, так что код пользователя и код дизайнера могут храниться в разных файлах. Это делает менее вероятным, что разработчики изменят код дизайнера и испортят конструктор, а также сделают файл кода пользователя намного проще. –

+0

Это имеет смысл. Благодарю. – SlowForce

ответ

0

OK проблема решена:

Я прохожу ServerGUI к классу ClientHandler так:

ClientHandler handler = new ClientHandler(clientSocket, "Client " + id.ToString(),this); 

и тогда я могу делать все, что я хочу. Мало кто занял у меня 2 часа!

+1

Одна вещь, которую вы, возможно, захотите рассмотреть, - это то, что описанный вами дизайн помещает ваш ClientHandler в обязанности обновления графического интерфейса. Если бы вы изменили дизайн, чтобы ClientHandler предоставлял события, уведомляющие об изменениях, и графический интерфейс потребляет события, тогда у вас будет гибкость в изменении графического интерфейса в будущем без использования кода ClientHandler. –

Смежные вопросы