Вверх ↑
Ответов: 9906
Рейтинг: 351
#1: 2017-05-13 15:54:54 ЛС | профиль | цитата
nesco писал(а):
Пардонсе

nesco, не сумлевайся -- Netspirit говорит правду.

Интернет говорит о том, что Terminate надо использовать в самом крайнем случае, когда уже вовсе не до жиру.
А правильная логика (как говорит тот же интернет) состоит в том, что вместо Teminate посылают сигнал.
Т.е. устанавливают Event, специально для этого созданный - в сигнальное состояние.
После чего ожидают перехода Thread-а в сигнальное состояние (и, может быть, только по какому-то большому тайм-ауту - выполняют Terminate).

А для того, чтобы поток перешел в сигнальное состояние (типа завершился) - в самих потоках делают не WaitForSingleObject (как у тебя), а WaitForMultipleObjects.
Одно событие - сегодняшнее, а второе - как раз для завершения (которое и должен послать CloseCom).
Во втором случае - корректно завершаем поток (да хоть бы и exit).

В общем, как-то так ........
карма: 9

0
Редактировалось 5 раз(а), последний 2017-05-15 09:29:31