【问题标题】:c# Compact Framework detect connection closedc# Compact Framework 检测连接关闭
【发布时间】:2014-02-08 15:41:25
【问题描述】:

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

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

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

我找到了this answer,但它不包括我需要的“使用”指令,而且我不确定发生了什么。

感谢所有提示,特别是如果它们解决了问题。谢谢!

【问题讨论】:

  • 您没有包含任何类型的代码示例...您使用的是什么流类?直接使用 Socket 类可能会更好。

标签: c# networking compact-framework


【解决方案1】:

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

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

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

【讨论】:

    猜你喜欢
    • 2016-05-15
    • 1970-01-01
    • 2017-01-17
    • 1970-01-01
    • 2013-02-02
    • 1970-01-01
    • 1970-01-01
    • 2013-01-07
    • 1970-01-01
    相关资源
    最近更新 更多