Boa tarde pessoal

encontrei um problema ao usar threads, gostaria da sugestão dos colegas, pra 
esplicar direito, estou colocando abaixo uma serie de passos que utilizei, e em 
seguida vem a minha pergunta...rsss

Tenho 4 variaveis para instanciar threads, como no exemplo.


TMinhaThread = class(TThread)
private  
  FId : Integer;
public
  procedure Execute; override;
  property Id : Integer read FId write FId;
end;


vThread1 : TMinhaThread;
vThread2 : TMinhaThread;
vThread3 : TMinhaThread;
vThread4 : TMinhaThread;

...
em determinado momento eu crio estas threads com o suspend e FreeOnTerminate em 
true, e em seguida faco chamada ao metodo resume

vThread1 := TMinhaThread.Create(True);
vThread2 := TMinhaThread.Create(True);
vThread3 := TMinhaThread.Create(True);
vThread4 := TMinhaThread.Create(True);

vThread1.Id := 1;
vThread2.Id := 2;
vThread3.Id := 3;
vThread4.Id := 4;

vThread1.FreeOnTerminate := True;
vThread2.FreeOnTerminate := True;
vThread3.FreeOnTerminate := True;
vThread4.FreeOnTerminate := True;

vThread1.Resume;
vThread2.Resume;
vThread3.Resume;
vThread4.Resume;


tomo os devidos cuidados no execute para que verifique e saia do loop caso a 
thread tenha sido terminada.

procedure TMinhaThread.Execute;
begin
  override;
  ...
  while... and not Terminated do begin
  ...
  end;  
end;


Mas ao fechar o sistema eu estou usando...
  ShowMessage( IntToStr(vThread1.id)); e esta funcionando. (exibindo  a 
mensagem na tela)

Minhas perguntas. 

Usando o free on terminate, porque não ocorreu um access violation ao chamar 
thread.id?
Isto quer dizer que a thread ainda esta rodando? (veriquei o evento, 
OnThreadTerminate...e ele esta sendo executado pra cada uma das 4).
Porque usando um Assigned(vThread1) por exemplo....retorna True?(isto no ao 
fechar o sistema).

Desculpe pelo longo texto.

Atenc.;
Elazar


      Novos endereços, o Yahoo! que você conhece. Crie um email novo com a sua 
cara @ymail.com ou @rocketmail.com.
http://br.new.mail.yahoo.com/addresses

[As partes desta mensagem que não continham texto foram removidas]

Responder a