Array
(
)

TAnimate - Trava ao executar uma operação

Mmoreira
   - 18 nov 2005

Salve!!!

Tenho uma rotina para envio de email usando o indy + delphi7, O envio de email esta funcionando normal o meu problema é que quando mando enviar o email .... a animação do componente TAnimate para .... ela simplesmente trava, fica parada até que o email seja enviado .... depois ela volta a funcionar. Já tentei fazer assim:


Citação:

Application.ProcessMessages;
smtp.Connect;
try
smtp.Send( mensagem );
FreeAndNil( newText );
FreeAndNil( newAttach );
smtp.Disconnect;
except
on e : Exception do MessageDlg( ´Erro ao tentar enviar o email. :´ + e.Message, mtInformation, [mbOK], 0 );
end;


Mas nao resolveu, continua travando o TAnimate.

alguem sabe o que posso fazer para resolver???

valewsss


Massuda
   - 18 nov 2005

Se o ´smtp´ em seu código for um TIdSMTP do Indy, coloque também no form um componente TIdAntiFreeze (normalmente na aba Indy Misc).


Michael
   - 18 nov 2005

Olá!

ProcessMessages não funciona neste caso pq o lag está no método Send. A solução seria enviar o email de dentro de uma thread.

[]´s


Mmoreira
   - 18 nov 2005

Massuda,

Eu coloquei o TIdAntiFreeze e nao adiantou muito, a animação continua travando ....



Michel,

Bom eu nao saco nada de thread, vou dar uma pesquisada no forum e ver o que consigo ...


valews


Massuda
   - 18 nov 2005


Citação:
Eu coloquei o TIdAntiFreeze e nao adiantou muito...
Você tem algum processamento adicional sendo feito durante o envio do email (por exemplo, barra de progresso)?


Martins
   - 18 nov 2005


Citação:
Olá!

ProcessMessages não funciona neste caso pq o lag está no método Send. A solução seria enviar o email de dentro de uma thread.

[]´s


Concordo com vc garotinho...

#Código


TMailThread = class( TThread )
protected
procedure Execute; override;
end;

.....

procedure TMailThread.Execute;
begin

{Seus códigos.... }
.....

end;


Depois vc faz a chamada a sua Thread.

Michael passa no fórum do ArapuKa.

Um Abraço


Mmoreira
   - 21 nov 2005

Massuda

Eu nao tenho nenhum outro processo junto com:

try
smtp.Send( mensagem );


Um pouco antes de enviar o email eu abro um ClientDataSet com poucos registros.

Martins,
Estou dando uma estudada sobre thread ...

Tenho que resolver isso o quanto antes.

valews