Hi,
I'm using a TcpClient
in one of my Compact Framework 2.0 applications. I want to receive some information from a TCP server.
As the Compact Framework does not support the timeout mechanisms of the "large" framework, I'm trying to implement my own timeout-thing. Basically, I want to do the following:
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??
}
I'd like to call Set
for the IAsyncResult.AsyncWaitHandle
, but it doesn't have such a method and I don't know which implementation to cast it to.
How do I set the wait handle? Or is it automatically set by calling EndRead
? The documentation suggests that I'd have to call Set
myself...
Thanks for any help!
UPDATE
Seems that the wait handle is set automatically when calling EndRead
- but it's not in the docs. Can somebody confirm this?
UPDATE 2
Wrote client.BeginRead
in my sample code. Of course, BeginRead
is called on the NetworkStream
...