我在我的TcpClient
一个 Compact Framework 2.0 应用程序中使用了一个。我想从 TCP 服务器接收一些信息。
由于 Compact Framework 不支持“大型”框架的超时机制,我正在尝试实现我自己的超时机制。基本上,我想做以下事情:
IAsyncResult result = networkStream.BeginRead(buffer, 0, size, ..., networkStream);
if (!result.AsyncWaitHandle.WaitOne(5000, false))
// Handle timeout
private void ReceiveFinished(IAsyncResult ar)
{
NetworkStream stream = (NetworkStream)ar.AsyncState;
int numBytes = stream.EndRead(ar);
// SIGNAL IASYNCRESULT.ASYNCWAITHANDLE HERE ... HOW??
}
我想调用Set
,IAsyncResult.AsyncWaitHandle
但它没有这样的方法,我不知道将它转换为哪个实现。
如何设置等待句柄?还是通过调用自动设置EndRead
?文档表明我必须称Set
自己为...
谢谢你的帮助!
更新
似乎在调用时会自动设置等待句柄EndRead
- 但它不在文档中。有人可以证实这一点吗?
更新 2
写client.BeginRead
在我的示例代码中。当然,BeginRead
被称为NetworkStream
...