Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2007.10.14;
Скачать: CL | DM;

Вниз

ThreadTerminate   Найти похожие ветки 

 
vampir_infernal   (2007-03-12 09:54) [0]

Злравствуйте, уважаемые.
Матчасть: D2005, WinXP SP2, KOL 2.54
Проблема: создаю поток функцией вида:
function NewMyThread( ACreateSuspended: boolean ): PMyThread;
begin
    New( Result, Create );
    Result.FStopped := ACreateSuspended;
    Result.FSuspended := true;
    Result.FHandle := CreateThread( nil, 0,  @ThreadFuncP, Result,  
                          CREATE_SUSPENDED,  
                          Result.FThreadID );
    Result.FOnExecute := Result.DoExecuteMyThread;
end;

Все проходит хорошо, но при вызове Terminate выполнение доходит до строчки TerminateThread(FHandle, 0); в модуле KOL.pas и следующая за ней строчка не выполняется. В программе используются несколько потоков, с остальными все в порядке. Тип MyThread наследуется от TThread. В дебаггере смотрел, хэндл нормальный, не нулевой. Создаются другие потоки такой же функцией, отличающейся лишь управляющей процедурой ThreadFunc и типом результата (тоже наследники от TThread).
Вопрос: как создать поток, который потом корректно уничтожится с помощью TerminateThread?


 
Vladimir Kladov   (2007-03-12 15:23) [1]

TerminateThread не может уничтожить поток корректоно по определению. Корректное завершение потока возможно только в результате выхода из OnExecute как из процедуры.


 
vampir_infernal   (2007-03-12 22:45) [2]

перефразирую вопрос: почему TerminateThread в каких-то случаях нормально срабатывает, а в каких-то (в моем например) не возвращает управления в вызвавшую процедуру?


 
Vladimir Kladov   (2007-03-13 17:27) [3]

Может, из самого потока вызов был?


 
vampir_infernal   (2007-03-13 17:57) [4]

Да, так и было. В этом и была причина. Спасибо.



Страницы: 1 вся ветка

Текущий архив: 2007.10.14;
Скачать: CL | DM;

Наверх




Память: 0.47 MB
Время: 0.023 c
15-1189600171
zdm77
2007-09-12 16:29
2007.10.14
Фискальный регистратор


15-1190081676
Slider007
2007-09-18 06:14
2007.10.14
С днем рождения ! 18 сентября 2007 вторник


2-1189572995
Mariya
2007-09-12 08:56
2007.10.14
Подскажите в чем ошибка?


15-1189674415
Евгеней
2007-09-13 13:06
2007.10.14
ПДД


2-1184309419
zero
2007-07-13 10:50
2007.10.14
Не срабатывает метод insert в Query