Costruttore:
codice:
constructor TAggiornaStato.create(q,q1,q2:TADOQuery;priorita:TThreadPriority;vedi_storico:boolean);
begin
FreeOnTerminate:=false;
qry:=q;
qry2:=q1;
qry3:=q2;
esegui:=true;
inherited Create(False);
end;
Procedura che dovrebbe fermare l'elaborazione:
codice:
procedure TAggiornaStato.fermaElaborazione;
begin
esegui:=false;
end;
Procedure dell'execute :
codice:
procedure TAggiornaStato.Execute;
begin
updateState;
while (esegui) do
begin
try
if (Terminated) then
updateState;
except
on e:exception do
messageDlg('Errore Thread: '+trim(e.message),mtwarning,[mbOk],0);
end;
Sleep(4000);
end;
end;
quando lo termino faccio :
codice:
var
//dichiarato allinizio ovviamente
AGGST:TaggiornaStato;
...
begin
....
AGGST.fermaElaborazione
//attendo il terminate
repeat
until AGGST.terminate;
AGGST.free;
AGGST:=nil;
end;
Il problema è che ora alle volte rimane incatrato in quel ciclo...