2009-08-12 89 views
-1

我在VB.Net中做了一个游戏,它使用tcp并来回发送消息。用VB.NET冻结TCP

发生的事情是,每隔一段时间,消息都不能很快发送,所以TCPObj.connect()方法进入循环,直到它达到超时,然后吐出一个错误。大多数情况下,它永远不会出现错误,我的应用程序会冻结,然后在TCPObj.connect()成功后返回。如何使connect()方法在尝试连接时执行application.doevents?基本上,我不希望它冻结我的整个应用程序。由于tcp.connect()是一种.NET方法,因此我无法进入并添加application.doevents

回答

1

在单独的线程上运行您的TCP连接代码。您可以使用队列来存储要从您的UI发送的事件,并让单独的线程选取并处理它们。

0

将连接放到另一个线程中的TCP。您可以使用异步回调来回到主线程。如果由于超时而在另一个线程上出错,则可以在那里或在主线程上处理它。