Функция WaitForSingleObject -- описание, как работает

Функция WaitForSingleObject останавливает выполнения программы до тех пор пока объект , идентификатор которого передан в функцию ,не окажется в "сигнальном" состоянии (в частности если передать сюда Handle - "держатель" потока (нити) ,то функция остановит выполнения того потока, в рамках которого она запущена ,до завершения работы того потока, Handle которого ей передали ) - но не дольше указанного временного интервала.

параметры =

DWORD WINAPI WaitForSingleObject(
  __in  HANDLE hHandle, // идентификатор объекта
  __in  DWORD dwMilliseconds // время ожидания в милисекундах
);

вместо указания конкретного времени в милисекундах можно просто передать "строковую" константу =

INFINITE

(прям так и вписать это слово в качестве параметра) - и тогда функция будет ждать изменения состояния объекта неограниченно долго.

Если вам просто требуется приостановить выполнение программы на некоторое время , можно использовать функцию (в качестве параметра принимает число миллисекунд) =

Sleep(  1000 ); // остановит выполнение на одну секунду
_____________________________________________
Источники(читать подробнее)=
Ключевые слова и фразы(для поиска)=
WaitForSingleObject функция