Fórum Delphi - Aplicação não termina, alguém tem a solução? #592395

11/04/2018

0

Por exemplo um código simples do source project:

begin
    Application.Initialize;
    Application.CreateForm(Tdm, dm);
    Application.CreateForm(TfrmPrincipal, frmPrincipal);
    Application.Run;
end.


No debugador:
quando ele executa a linha do END, ele deveria encerrar toda a aplicação e limpar o executável da memória.

Acontece que as vezes ele encerra corretamente, mas as vezes algumas threats do próprio sistema ficam como "running"
e a aplicação fica "presa" ali e o executável permanece na memória.

Acontece tanto no debug do projeto, quanto na execução do executável fora do delphi.

Alguém tem a solução?
Alberto

Alberto

Responder

Post mais votado

12/04/2018

se você já estiver com alguma conexão com um banco de dados, dê um rollback nas transações abertas, feche todos os datasets e feche a conexão com o banco antes de fechar o form principal.

Emerson Nascimento

Emerson Nascimento
Responder

Gostei + 1

Mais Posts

12/04/2018

Alberto

Já tentei fazer isso, mas não resolveu, deve ser outra coisa.
Responder

Gostei + 0

12/04/2018

Emerson Nascimento

tente:

begin
Application.Initialize;
Application.CreateForm(Tdm, dm);
Application.CreateForm(TfrmPrincipal, frmPrincipal);
Application.Run;
Application.Terminate;
end.
Responder

Gostei + 1

12/04/2018

Emerson Nascimento

precisa ver se pelo meio do código você não cria alguma classe que precisa ser destruída antes do Form, ou se tem algum Timer funcionando, ou alguma Thread em execução...
Responder

Gostei + 0

12/04/2018

Alberto

Consegui encontrar o responsável pelo travamento:
Era o componente TFDEventAlerter do FireDac que ao fechar a conexão com o banco estava travando.
Não descobri o porque está acontecendo isso, sé é algum bug do delphi ou outra coisa.
Mas ao desabilitar ele o sistema está encerrando normalmente.
.
Agora preciso descobrir como fazê-lo funcionar a contento.
Responder

Gostei + 0

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

Aceitar