Thread
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
agradeço a atenção,
Rafael
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
Curtidas 0
Respostas
Nildo
22/08/2003
Mas deveria funcionar. O Thread foi feito para isso.
No evento Criar, altere a propriedade priority:
Self.priority := (Olhe no Help pq nao lembro);
No evento Criar, altere a propriedade priority:
Self.priority := (Olhe no Help pq nao lembro);
GOSTEI 0
Pgarcia
22/08/2003
Parece correto.
Qual prioridade vc está usando?
Qual prioridade vc está usando?
GOSTEI 0
Biscoitorfa
22/08/2003
Bom,
não estou utilizando nunhuma prioridade!!!
não estou utilizando nunhuma prioridade!!!
GOSTEI 0
Biscoitorfa
22/08/2003
Coloquei
Self.Priority := tpNormal;
e continua a mesma coisa!!! Enquanto as barras estão crescendo a aplicação fica travada!!!!
Self.Priority := tpNormal;
e continua a mesma coisa!!! Enquanto as barras estão crescendo a aplicação fica travada!!!!
GOSTEI 0
Nildo
22/08/2003
Coloque um Application.ProcessMessages depois do Syncronize (dentro do while)
GOSTEI 0
Cebikyn
22/08/2003
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...
GOSTEI 0
Biscoitorfa
22/08/2003
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???
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???
GOSTEI 0
Biscoitorfa
22/08/2003
Ao criar duas threads simultaneas e utilizar o: Application.ProcessMessages;
o programa continua travado!!!
Só funciona se criar uma Thread por vez!!!
o programa continua travado!!!
Só funciona se criar uma Thread por vez!!!
GOSTEI 0
Nildo
22/08/2003
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?
GOSTEI 0