А>Но есть вариант, что сервер не сможет ответить, соответственно мне нужно добавить таймер,
А>при срабатывании которого прекращать ожидание WaitHandle.
Зачем такие сложности?
http://msdn.microsoft.com/en-us/library/cc190839.aspx
WaitHandle.WaitAll Method (WaitHandle[], Int32)
millisecondsTimeout
Type: System.Int32
The number of milliseconds to wait, or Timeout.Infinite (-1) to wait indefinitely.
Return Value
Type: System.Boolean
true when every element in waitHandles has received a signal; otherwise, false.