TcpClient
CompactFramework2.0アプリケーションの1つでを使用しています。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
...
助けてくれてありがとう!
UPDATE
呼び出し時に待機ハンドルが自動的に設定されているようEndRead
ですが、ドキュメントにはありません。誰かがこれを確認できますか?
UPDATE2サンプルコードを
書きました。client.BeginRead
もちろん、BeginRead
と呼ばれていNetworkStream
ます...