Как видно из названия, ManualResetEvent
необходимо сбросить вручную.Это как дверь.Инициализируется с помощью
ManualResetEvent ev = new ManualResetEvent(false); // The door is closed
или
ManualResetEvent ev = new ManualResetEvent(true); // The door is open
Поток, который вызывает WaitOne
, пропускает дверь, если он открыт, в противном случае ждет у двери, пока она не откроется.
Звонок
ev.Set();
открывает дверь, а звонок
ev.Reset();
закрывает дверь.
Насколько я понимаю ваш вопрос,AutoResetEvent
поможет больше.Или даже лучше создать асинхронную функцию, которая выполняет вызов TCP и возвращает результат.