2009-08-12 2 views
-1

Я сделал игру в VB .Net, которая использует tcp и отправляет сообщения туда и обратно.TCP замораживание с помощью VB.NET

Что происходит, так часто, сообщение не может быть отправлено достаточно быстро, поэтому метод TCPObj.connect() переходит в цикл, пока не достигнет таймаута, а затем выплевывает ошибку. Большую часть времени, хотя, он никогда не доходит до ошибки, мое приложение просто зависает, а затем возвращается после TCPObj.connect() успешно. Как я могу сделать метод connect() делать application.doevents, пока он пытается подключиться? В принципе, я не хочу, чтобы это заморозило все мое приложение. Поскольку tcp.connect() - это метод .NET, я не могу войти и добавить application.doevents.

ответ

1

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

0

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