我正在为Windows CE设备编写.NET Compact Framework应用程序。我的应用程序使用XML序列化数据包与台式计算机通信。
我遇到的是如果网络电缆被拔掉,我的stream.Read操作会无限期地阻塞。我的CF不支持设置超时。
我正在寻找关于如何处理这个问题的“最佳实践”答案。如果连接因任何原因而关闭,我的循环应该停止并开始尝试重新连接。
我找到了this answer,但它不包含我需要的“使用”指令,而且我不知道到底发生了什么。
所有提示都表示赞赏,特别是如果他们解决了问题。谢谢!
答案 0 :(得分:0)
由于stream.Read是一个阻塞调用,你应该将代码移动到一个单独的线程中,如同所有阻塞函数的建议一样。
然后,您可以使用linked code来停止该线程。例如,首先使用Thread.Join然后使用Thread.Abort()。将代码放在try / catch块中的线程内,并捕获ThreadAbortException以了解线程何时被中止。
当您开始编写线程代码时,您必须找到一种与其余代码同步的方法。这通常使用委托和事件处理程序完成。但这是一项不同的任务,如果你之前没有这样做,值得进行一些研究。