日期:2014-05-18  浏览次数:21379 次

c#中UDP编程Receive阻塞造成界面假死
在c#的winfrom界面中点击Button发送一个信息给服务器,用udps.Receive(ref iep)
来接受服务器的反馈。当服务器没有反馈就会出现死等,导致程序无响应。
怎么给Receive设置一个超时时间呢,或者有什么别的方法吗?

------解决方案--------------------
你用的是同步接收数据,也就是当没有数据的时候Receive方法会挂起当前线程直到有数据库发送过来
可以另外开一个线程去执行Receive方法别在UI线程内使用同步,当然你也可以使用异步的方式
------解决方案--------------------
1 。 将这个事情放在一个新线程里解决。

2. 设置过时方法不可行,因为你的程序逻辑就崩溃了。你应该是等待服务端信息才对。

所以没有别的方法了,多线程中做这件事就行了。
 
------解决方案--------------------
多线程里面~~最好也别轮询~~~能异步就异步吧~
------解决方案--------------------
用多线程进行接收
通过委托处理数据
------解决方案--------------------
你用的是同步接收数据,也就是当没有数据的时候Receive方法会挂起当前线程直到有数据库发送过来 
可以另外开一个线程去执行Receive方法别在UI线程内使用同步,当然你也可以使用异步的方式