c#Compact Framework检测连接已关闭

时间:2014-01-25 21:07:22

标签: c# networking compact-framework

我正在为Windows CE设备编写.NET Compact Framework应用程序。我的应用程序使用XML序列化数据包与台式计算机通信。

我遇到的是如果网络电缆被拔掉,我的stream.Read操作会无限期地阻塞。我的CF不支持设置超时。

我正在寻找关于如何处理这个问题的“最佳实践”答案。如果连接因任何原因而关闭,我的循环应该停止并开始尝试重新连接。

我找到了this answer,但它不包含我需要的“使用”指令,而且我不知道到底发生了什么。

所有提示都表示赞赏,特别是如果他们解决了问题。谢谢!

1 个答案:

答案 0 :(得分:0)

由于stream.Read是一个阻塞调用,你应该将代码移动到一个单独的线程中,如同所有阻塞函数的建议一样。

然后,您可以使用linked code来停止该线程。例如,首先使用Thread.Join然后使用Thread.Abort()。将代码放在try / catch块中的线程内,并捕获ThreadAbortException以了解线程何时被中止。

当您开始编写线程代码时,您必须找到一种与其余代码同步的方法。这通常使用委托和事件处理程序完成。但这是一项不同的任务,如果你之前没有这样做,值得进行一些研究。