Instância de uma classe Thread?

Delphi

09/07/2004

Como verificar se uma instância de uma classe Thread já foi criada?

Por exemplo, tenho a classe abaixo....

type
suporteOS = class(TThread)
private
codigo:integer;
protected
procedure Execute; override;
procedure imprime;
public
constructor criar(criatesuspended: Boolean; pcodigo:integer);
end;

... e faço uma chamada em um timer que cria uma instância da classe suporteOS

suporteOS.Criar(false, 6);

Preciso impedir que, no próximo ciclo do timer, se a instância ainda estiver executando, não seja disparado novamente a instrução suporteOS.Criar(false, 6), ou seja, como faço para verificar se já existe uma instância de suporteOS?

QQ ajuda é bem-vinda.
Delmar


Delmar

Delmar

Curtidas 0

Respostas

Bico

Bico

09/07/2004

Bom dia.

Eu resolveria este problema da seguinte maneira:

Criaria uma variável global do tipo suporteOS:
VsuporteOS: suporteOS;


No evento on timer faria um teste para verificar a variável:
begin
  if not(Assigned(VsuporteOS)) then
    VSuporte := suporteOS.Create(False);
end;


No evento OnTerminate da Thread acho que teria que colocar algo do tipo:
Self := nil;

ou
Self.Free;

Espero ter ajudado...

Atenciosamente,
Fernando.


GOSTEI 0
Dopi

Dopi

09/07/2004

Só uma dica....

Quando for criar seu próprio construtor é recomendado usar o mesmo nome do Constructor da Classe mãe.... ou seja... Create

constructor criar(criatesuspended: Boolean; pcodigo:integer); 
constructor create(criatesuspended: Boolean; pcodigo:integer); 


Em alguns casos é necessário acrescentar a clausula override ; após a declaração... ( se o metodo da classe mae foi declarado como virtual )

Assim fica mais seguro, pois não deixa chance do usuário chamar o metodo Create da classe mãe, já que ele foi sobreposto...


GOSTEI 0
POSTAR