【问题标题】:BinaryReader.ReadByte() doesn't TimedOutBinaryReader.ReadByte() 没有超时
【发布时间】:2013-01-17 07:13:08
【问题描述】:

我有一个互联网流,我正在从中创建阅读器

var reader = new BinaryReader(stream);

然后我正在读取字节以搜索“同步字”

if (reader.ReadByte() != magic[i++])

但有时我对ReadByte() 有疑问。我预计如果阅读器无法从流中读取字节,它会抛出异常,但它不会抛出任何东西。 (服务器没有关闭,只是不提供字节)。

所以我的问题是 - 如何让这个方法超时? 我可以将 TPL 与 CancellationToken 一起使用,但不明白如何在需要时取消方法 ReadByte。

【问题讨论】:

  • 你是如何获得流的?您可能可以在那里设置超时。
  • 我使用 TcpClient 获取流 client.GetStream();

标签: .net windows-phone-7 stream binaryreader request-cancelling


【解决方案1】:

鉴于我们现在知道这是来自TcpClient,我建议在请求流之前设置TcpClient.ReceiveTimeout。这应该会使读取调用适当地超时。

(另一方面,我认为TcpClient 在 WP7 上不可用,所以我不确定你是如何使用它的......)

【讨论】:

  • 我为此使用了 SocketEx 库。谢谢,我将看到通过标准 WP7 套接字更改为本地方式的客户端-服务器通信。
猜你喜欢
  • 1970-01-01
  • 2013-05-17
  • 1970-01-01
  • 2017-09-13
  • 2012-06-30
  • 1970-01-01
  • 2018-10-24
  • 2011-09-21
  • 2011-08-23
相关资源
最近更新 更多