Вы ошибочно вызываете _endthreadex () , чтобы попытаться завершить поток из основного потока?
Функция _endthreadex () предназначена для вызова внутри потока, который вы хотите прервать, чтобы сообщить о возвращаемом значении, и для надлежащего «восстановления ресурсов, выделенных для потока». Вам не нужно вызывать его в деструкторе из основного потока. В деструкторе вы могли бы сигнализировать потоку через событие (см. SetEvent , вызванное из основного потока), что поток должен выйти как можно скорее, а затем поток, который выходит как его последний оператор вызовет _endthreadex () .
Вызов _endthreadex () в вашем основном потоке приведет к зависанию процесса, потому что вы завершили основной поток, но у вас все еще будет исходный поток, который вы хотите прекратить, все еще работающий. *