GARANTIR DESCONTO

Fórum Instância de uma classe Thread? #242230

09/07/2004

0

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

Responder

Posts

09/07/2004

Bico

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.


Responder

Gostei + 0

09/07/2004

Dopi

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...


Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar