TerminateThread()
- немедленное прекращение перебора.Это НЕ позволит событию OnTerminaate
сработать.Единственный способ запустить OnTerminate
- это если метод потока Execute()
завершается обычным способом, будь то изящно или путем вызова необработанного исключения (которое установит свойство потока FatalExpection
).
ВВ частности, в случае Indy блокирующую операцию сокета можно прервать, отсоединив сокет от контекста другого потока.Обычно это невозможно при блокировке функций DLL, если они не предоставляют такую функциональность в своем API.