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]