GARANTIR DESCONTO

Fórum Thread #176787

22/08/2003

0

Olá!!!

estou aprendendo a trabalhar com threads no delphi porém tenho um problema!!! Criei uma thread que faz com que barras de progresso incrementem!! É criado uma thread para cada barra e é executado normalmente!!! Elas vão progredindo paralelamente. Até ai tudo ok!!!

O problema acontece que enquanto elas estão carregando gostaria que a minha aplicação continuasse funcionando normalmente. Exemplo: Gostaria de minimizar a aplicação ou clicar em um botão e mostrar uma menssagem!!!
O código da thread é o seguinte

unit TrdBarra;

interface

uses
Classes, ComCtrls;

type
  TMeuThread = class(TThread)
    private
      BarraProgresso: TProgressBar;
    protected
      procedure Execute; override;
      procedure Incrementa;
    public
      constructor Criar(Barra: TProgressBar);
    end;

implementation

constructor TMeuThread.Criar(Barra: TProgressBar);
begin
  Create(False);
  BarraProgresso := Barra;
  FreeOnTerminate := True;
end;

procedure TMeuThread.Execute;
begin
  while BarraProgresso.Position < BarraProgresso.Max do
  Synchronize(Incrementa);
end;

procedure TMeuThread.Incrementa;
begin
  BarraProgresso.StepBy(1);
end;

end.


  



agradeço a atenção,

Rafael


Biscoitorfa

Biscoitorfa

Responder

Posts

22/08/2003

Nildo

Mas deveria funcionar. O Thread foi feito para isso.
No evento Criar, altere a propriedade priority:

Self.priority := (Olhe no Help pq nao lembro);


Responder

Gostei + 0

22/08/2003

Pgarcia

Parece correto.

Qual prioridade vc está usando?


Responder

Gostei + 0

22/08/2003

Biscoitorfa

Bom,

não estou utilizando nunhuma prioridade!!!


Responder

Gostei + 0

22/08/2003

Biscoitorfa

Coloquei
Self.Priority := tpNormal;

e continua a mesma coisa!!! Enquanto as barras estão crescendo a aplicação fica travada!!!!


Responder

Gostei + 0

22/08/2003

Nildo

Coloque um Application.ProcessMessages depois do Syncronize (dentro do while)


Responder

Gostei + 0

22/08/2003

Cebikyn

Criei uma thread que faz com que barras de progresso incrementem!! É criado uma thread para cada barra e é executado normalmente!!! Elas vão progredindo paralelamente.


Já vi isso em algum lugar... acho que foi num livro...


Responder

Gostei + 0

22/08/2003

Biscoitorfa

Bom....

fiz uma coisa aqui que resolveu mais ou menos o problema!!! Criei apenas uma Thread e ai sim a aplicação funcionou legal!!! Acho que não posso criar mais de uma thread ao mesmo tempo!! Será que tem alguma coisa haver???


Responder

Gostei + 0

22/08/2003

Biscoitorfa

Ao criar duas threads simultaneas e utilizar o: Application.ProcessMessages;

o programa continua travado!!!

Só funciona se criar uma Thread por vez!!!


Responder

Gostei + 0

22/08/2003

Nildo

NAo. Outro dia coloquei umas 50 threads e funcionaram normal (lerdo pra burro) mas foi pra teste. Pq vc num utiliza o TThread to Abf Components?


Responder

Gostei + 0

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

Aceitar