2009-09-13 2 views
0

Я использую создание программы для сервера/клиента и использует tcp-соединения.Выполнение сценария TCP-сервера постоянно, но с низким использованием процессора.

Теперь сервер похож на this, но он будет слушать только до тех пор, пока он не получит свой запрос. Моя проблема заключается в том, что она только слушает, пока не получит одно сообщение, а затем закрывается. Тем не менее, большая проблема заключается в задержке, она не позволит мне взаимодействовать с формой каким-либо образом, пока она не закрывает соединение. Есть ли способ заставить его «пассивно» слушать, из-за отсутствия лучшего слова? Я не хочу, чтобы он занимал кучу процессора.

Спасибо за помощь!

Это в vb.net.

ответ

2

В Windows события, такие как нажатия клавиш, щелчки и движения мыши и т. Д., Отправляются как события (сообщения) в поток, предназначенный для их обработки. Если этот поток занимает много времени для обработки сообщения (как и в ожидании ввода TCP-запроса), поток называется «блокировать» до тех пор, пока эта задача не завершится, по сути, блокируя весь ваш пользовательский интерфейс.

Вы хотите настроить поток отдельно от того, который запускает вашу форму, чтобы обрабатывать прослушивание TCP. Это tutorial on threading в Vb.Net должно заставить вас идти по правильному пути.

+0

Threading сделал это. Благодаря!!!!! – Cyclone

0

Посмотрите на класс TcpListener, а также проверьте код, показанный для метода Pending.

Вам действительно лучше использовать потоки, чтобы обрабатывать все это, так как вы хотите, чтобы ваш поток пользовательского интерфейса оставался доступным, чтобы поддерживать ваш интерфейс.