我使用的是异步多线程的socket。经常遇到以下几个问题不知道怎么解决:1、在开始了beginReceiveFrom之后,如果没有收到响应,想停止这个EndReceiveFrom等待,却不知道该怎么停止。2、因为没有办法停止EndReceiveFrom的等待,因此每次在应用程序关闭的时候,总会因为关闭socket而导致System.ObjectDisposedException: 无法访问名为“System.Net.Sockets.Socket”的已处置对象。
对象名: “System.Net.Sockets.Socket”这样一个异常。3、在BeginReceiveFrom的callBack函数里面使用EndReceiveFrom时,时不时会出现:System.Net.Sockets.SocketException: 由于线程退出或应用程序请求,已放弃 I/O 操作。
at System.Net.Sockets.Socket.EndReceiveFrom(IAsyncResult asyncResult, EndPoint& endPoint)这样一个异常。请问高手这些问题是怎样引起和有什么办法解决吗?
对象名: “System.Net.Sockets.Socket”这样一个异常。3、在BeginReceiveFrom的callBack函数里面使用EndReceiveFrom时,时不时会出现:System.Net.Sockets.SocketException: 由于线程退出或应用程序请求,已放弃 I/O 操作。
at System.Net.Sockets.Socket.EndReceiveFrom(IAsyncResult asyncResult, EndPoint& endPoint)这样一个异常。请问高手这些问题是怎样引起和有什么办法解决吗?
解决方案 »
- 关于字符串数组的一个疑惑,忘解答,,
- 基于xna的windows phone 7.5俄罗斯方块
- C# 仓储系统商品返厂问题
- C#中如何进行对SQL SERVER 2000跨网关连接啊 急!!!
- 在C#中,如何实现十进制个二进制之间的转化
- 高手帮忙,感觉好难!多谢了!!!!
- 怎样自定义工具栏
- ×××××××××××如何在程序结束时关闭所有套接字地址连接?×××××××××
- DataGrid是否可以两行显示一条记录??(即A字段在N行B字段显示在N+1行.)
- gridcontrol更新数据疑点
- 为什么在保存Excel文件的时候很慢,最后导致页面无法显示?
- ----===一个关于toolbar(b/s)的刷新问题====-------
办法二:private static ManualResetEvent myMaEvent=new ManualResetEvent(false);
myMaEvent.Reset(); //该事件设为非终止
beginReceiveFrom()···
int timeout=500;
if(myMaEvent.WaitOne(timeout,false))
if(beginReceiveFrom判断是否接收成功)
return 成功;
else
return timeout;最后要把这句:myMaEvent.Set();放在异步处理函数中
receive(){
BeginReceiveFrom(... , ... ,callBack);
.....
}
callBack(.....){EndReceiveFrom();//do something....receive();
}然后这是在一个单独的线程里面进行的。是我的做法不对,还是有些要注意的地方我没有注意呢?
对于异步和阻塞,还有UDP和TCP这几个概念的组合,我真的迷惑了~~~