![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Не убиваеться поток !!! [D7, WinXP]
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]В чем проблема Уважаемые матера и подмастерья..