Delphi - Aplicação não termina, alguém tem a solução?

Delphi

11/04/2018

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

Curtidas 0

Melhor post

Emerson Nascimento

Emerson Nascimento

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.

GOSTEI 1

Mais Respostas

Alberto

Alberto

11/04/2018

Já tentei fazer isso, mas não resolveu, deve ser outra coisa.
GOSTEI 0
Emerson Nascimento

Emerson Nascimento

11/04/2018

tente:

begin
Application.Initialize;
Application.CreateForm(Tdm, dm);
Application.CreateForm(TfrmPrincipal, frmPrincipal);
Application.Run;
Application.Terminate;
end.
GOSTEI 1
Emerson Nascimento

Emerson Nascimento

11/04/2018

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...
GOSTEI 0
Alberto

Alberto

11/04/2018

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.
GOSTEI 0
POSTAR