Я приостанавливаю поток, используя событие. Когда eventSuspend сигнализируется, поток ожидает его.
// inside the thread function
WaitForSingleObject(eventSuspend, INFINITE );
Теперь извне я устанавливаю его для ожидания eventSuspend.ResetEvent()
но цикл внутри функции потока является длительным (отнимает много времени). Как я могу знать, что поток завершил все, что он делал, и теперь он действительно ждет этого сигнала?
Ваш вопрос неверен: нить, которая ждет, не приостановлена!
Поток приостанавливается после вызова SuspendThread()
но не после вызова WaitForSingleObject()
.
Просто установите флаг BOOL, когда цикл потока запущен и сбросьте флаг, когда цикл потока завершен, тогда вы знаете, работает ли он или нет.
Если вы хотите получить более подробную информацию о потоке, например, если это произойдет или нет, вы можете использовать код, который я разместил здесь: как получить состояние потока (например, приостановлено), память + использование ЦП, время начала, приоритет и т.д.