Instância de uma classe Thread?
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
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
Curtidas 0
Respostas
Bico
09/07/2004
Bom dia.
Eu resolveria este problema da seguinte maneira:
Criaria uma variável global do tipo suporteOS:
No evento on timer faria um teste para verificar a variável:
No evento OnTerminate da Thread acho que teria que colocar algo do tipo:
ou
Espero ter ajudado...
Atenciosamente,
Fernando.
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
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
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...
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