Thread não funciona - help

Delphi

10/11/2008

já fiz diversas pesquisas aqui no forum sobre o assunto, e não sei pq a minha Thread não funciona, ela trava a aplicação, somente depois de uns segundos volta ao normal com as informações que quero.

olhem como estou fazendo

TThread1 = class(TThread) protected constructor Create; procedure Execute; override; end; { TThread1 } constructor TThread1.Create; begin inherited Create(true); end; procedure TThread1.Execute; begin Self.Priority := tpLowest; mprincipal.LoadRSS; // Aqui que esta travando; end; var Threads: TThread1; begin Threads := TThread1.Create; Threads.FreeOnTerminate := true; Threads.Execute;



obrigado amigos


Sremulador

Sremulador

Curtidas 0

Respostas

Marcosrocha

Marcosrocha

10/11/2008

sremulador te digo com certeza que está travando porque o objeto pertence à aplicação e quando você manda carregar o RSS a Thread meio que ´espera´ a abertura do mesmo.
A solução seria criar e instanciar a classe que implementa LoadRSS dentro da Thread.
Já tivemos problemas parecidos com Threads + TIBDatabase + TIBQuery e a solução foi criar e instanciar objetos dessas classes dentro da Thread.


GOSTEI 0
Sremulador

Sremulador

10/11/2008

sremulador te digo com certeza que está travando porque o objeto pertence à aplicação e quando você manda carregar o RSS a Thread meio que ´espera´ a abertura do mesmo. A solução seria criar e instanciar a classe que implementa LoadRSS dentro da Thread. Já tivemos problemas parecidos com Threads + TIBDatabase + TIBQuery e a solução foi criar e instanciar objetos dessas classes dentro da Thread.



você fala com o sincroneze


GOSTEI 0
Marcosrocha

Marcosrocha

10/11/2008

Bom, na verdade minha sugestão era que método e classes que devem ler o CSS estivessem dentro da Thread.
TMyThread = class(TThread)
private
  IdHTTP1: TIdHTTP; // Faz de conta que é ele que acessa o RSS
  procedure LoadRSS;
protected
  procedure Execute; override;
end;

...

procedure TMyThread.LoadRSS;
begin
  IdHTTP1.GetURL(´http://www.google.com.br/´);
end;

Não sei se deu pra entender.


GOSTEI 0
POSTAR