私はSocketAsyncEventArgsを使用して、何百もの機器と通信しています(そのほとんどはGPRS経由)。場合によっては、タイムアウトオプション(つまり、SocketOptionName.SendTimeout)が非同期通信で動作しないと書類に記載されているため、その一部が応答を停止し、操作をタイムアウトする方法がないようです。SocketAsyncEventArgsとの非同期ソケット通信のタイムアウト
私はSend/Receive/ConnectAsyncを行う際にタイムアウトのチェック方法を探しています。スレッドをブロックすべきではないので、someMonitor.WaitOne(SomeTimeoutValue)を呼び出すことはできません)、操作ごとにタイマーインスタンスを作成したくありません(機器数が確実に増えるため)。
これに関するアドバイスはありますか?
どのトランスポートプロトコルを使用していますか?おそらく、あなたの問題を既に解決している[UDPClient](http://msdn.microsoft.com/en-us/library/system.net.sockets.udpclient.aspx)やTCPクラスのようなラッパークラスがありますか? – HaMster