Существует поток, который использует объект ADO Connection, работает с гнездом (-ами) и реагирует на внешние события с помощью WaitForSigleObject или WaitforMultipleObjects. Нить имеет петлю Endles с 3-х действиях:Как смешивать сокеты, сообщения и события
While PeekMessage(MSG, 0, 0, PM_REMOVE) do ProcessMessages(MSG); //for processing messages of COM system
if Socket.CanRead then ... //CanRead is true when there is data in socket to read
if WaitForSingleObject(fHandle, 0) = WAIT_OBJECT_0 then ... //fHandle is handle of outer event
Почти все время Нить отходы CPU с просьбой о всех трех типах событий. Есть ли способ заставить поток спать до тех пор, пока не произойдет один из трех типов событий, например WaitForMultiplyObjects или GetMessage?
MsgWaitForMultipleObjects звучит так, как вам нужно, хотя трудно быть уверенным, вопрос не содержит деталей. –