BinaryReader.ReadByte()不是TimedOut

时间:2013-01-17 07:13:09

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

我有一个互联网流,我正在创建读者

var reader = new BinaryReader(stream);

之后我正在读取搜索“同步字”的字节

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

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

所以我的问题是 - 如何超时这个方法? 我可以使用带有CancellationToken的TPL,但是不知道如何在需要时取消方法ReadByte。

1 个答案:

答案 0 :(得分:3)

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

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