Документация для GetExitCodeThread предупреждает о том, чтобы не использовать ее по этой причине, поскольку код ошибки STILL_ACTIVE может быть возвращен по другим причинам.
Спасибо за помощь!:)
Ответ 1
MSDN упоминает, что "когда поток завершается, объект потока достигает состояния с сигналом, удовлетворяющего любым потокам, которые ожидали объект".
Итак, вы можете проверить, завершился ли поток, проверив состояние дескриптора потока - независимо от того, сигнализировало оно или нет:
DWORD result = WaitForSingleObject( hThread, 0);
if (result == WAIT_OBJECT_0) {
// the thread handle is signaled - the thread has terminated
}
else {
// the thread handle is not signaled - the thread is still alive
}
Ответ 2
Документация, на которую вы ссылаетесь, запрещает использование STILL_ACTIVE в качестве кода возврата, поскольку ее нельзя отличить от возвращаемого значения, используемого для указания активного потока. Поэтому не используйте его как возвращаемое значение, и у вас не будет этой проблемы.