Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Не убиваеться поток !!! [D7, WinXP]


Страницы:   1 2

Vyzcheslav ©   (2005-06-22 14:05:00) 

Суть токава есть свой класс TTCSThread на основе TThread
вот описание Executу ->

procedure TTCSThread.Execute;
var idx: integer;
begin
 while not Terminated do begin
  if active then
     try
       if not AssignDatamanager then begin
         if CreateDB then begin
           AssignDatamanager;
           SystemLoadFile;
           Authorized;
         end;
       end;
       if DataManager.Connected then begin
         if not IsAuthotized(AirLineCode,CountryCode) then
           Authorized;
         for idx:= 0 to FileList.Count-1 do  begin
           ActiveLoadFile := idx;
           try
             LoadThisFile(FileList.Strings[idx]);
           except
           end;
         end;
         UpdateDatabase;
       end;
     finally
       Terminated := True
     end;
   sleep(10);
 end;
 Active := False;
end;

при  присвоение activу false вызываеться destroy проблема в том что при вызове в конце destroy inherited; дольнейшие отслеживание становиться невозможным, програма переходит в нормальный режим работы т.е.

 rdtLog.Lines.Add('...');
 if Assigned(TCSThread) then
   TCSThread.Free;
 rdtLog.SelAttributes.Style := [];

после строки TCSThread.Free; курсор не попадает на
rdtLog.SelAttributes.Style := []; и при это TCSThread не убивается !!! ошибок никаких не выдаеться ..


Digitman   (2005-06-22 14:21:00) [21]


> kaZaNoVa ©   (22.06.05 14:10) [3]


> Terminated := True малоэффективна


ж. с п. сравнивать - тоже "малоэффективно" : то ж. , а то п. !)


Vyzcheslav   (2005-06-22 14:20:00) [22]

>Приведи код конструктора.

constructor TTCSThread.Create;
begin
 inherited Create(False);
 Priority := tpHigher;
end;

>а в чем проблема - взять и установить брейкпойнт в теле Execute() да проследить пошагово, что и при каких условиях там происходит ?

Так вот пошагово смотрю и на  inherited; в destroy типа возрашаюс в прогу !!! а не перехожу на след строку в source code.(смотри начало.


Игорь Шевченко   (2005-06-22 14:18:00) [23]

kaZaNoVa ©   (22.06.05 14:10) [3]

Матчасть учить. Потом лезть с ламерскими советами.


Digitman   (2005-06-22 14:13:00) [24]


> В чем проблема


а в чем проблема - взять и установить брейкпойнт в теле Execute() да проследить пошагово, что и при каких условиях там происходит ?


kaZaNoVa   (2005-06-22 14:10:00) [25]

имхо поток можно убить TerminateThread()функцией,   Terminated := Trueмалоэффективна


Alexander Panov   (2005-06-22 14:09:00) [26]

Приведи код конструктора.


Vyzcheslav   (2005-06-22 14:06:00) [27]

В чем проблема Уважаемые матера и подмастерья..


Страницы:   1 2

Наверх

Титульная страница Поиск, карта сайта Написать письмо