I'm using SocketAsyncEventArgs to communicate with hundreds of equipments (most of them through GPRS). Sometimes, some of them stop responding and it seems I have no way of timing out the operation, as the documentation states that the timeout options (i.e SocketOptionName.SendTimeout) doesn't work on asynchronous communication.
I'm looking for a way of check for timeouts when doing Send/Receive/ConnectAsync. It should not block the thread (so, calling someMonitor.WaitOne(SomeTimeoutValue) won't do) and I don't want to create a timer instance per operation (as the number of equipments will surely increase).
Any tips on this?