Application.Terminate nie działa

0

Czemu w programie nie działa mi Application.Terminate ? Używam tam komonentów indy tcp. Polecenie zamkniecia aplikacji wywoływane jest z procedury onExecute (TidTCPserver).

0

Może coś więcej na ten temat? Jakiś kod?

0
procedure Tgame.TCP_odbiorExecute(AThread: TIdPeerThread);
var
text:AnsiString;
ip:AnsiString;
begin
{operacje odbiorowe}
  ip:=AThread.Connection.Socket.Binding.PeerIP;
  text:=AThread.Connection.ReadLn();
{///operacje odbiorowe}

{...}


if param(text,0) = 'err' then
begin
{wystapil blad - server wyslal takowy komunikat}
blad_zatrzymaj();
case StrToInt(param(text,1)) of
0 : Application.MessageBox('Użytkownik jest już zalogowany!','Błąd',MB_ICONERROR or MB_SYSTEMMODAL or MB_OK);
1 : Application.MessageBox('Podany IP jest już używany!','Błąd',MB_ICONERROR or MB_SYSTEMMODAL or MB_OK);
2 : Application.MessageBox('Niepoprawna nazwa użytkownika i/lub hasło!','Błąd',MB_ICONERROR or MB_SYSTEMMODAL or MB_OK);
3 : Application.MessageBox('Error 4 - bledy w systemie potwierdzen','Błąd',MB_ICONERROR or MB_SYSTEMMODAL or MB_OK);
4 : Application.MessageBox('Zostałeś wylogowany zaloguj sie ponownie, Error 5','Błąd',MB_ICONERROR or MB_SYSTEMMODAL or MB_OK);
end;

Application.Terminate;     {<<<<<<<<-------------}
end; {/wystapil blad}

{...}

if param(text,0) = 'wlgok' then
begin
{wylacz}
Application.Terminate;     {<<<<<<<<-------------}
end;

{...}

end;
0

Zapewne w aplikacji masz inne uruchomione wątki, na pewno chodzi o

AThread: TIdPeerThread

więc spróbuj przed Application.Terminate zakończyć go.

0

Próbowałem Athread.Terminate, Athread.Free, Athread.Stop ale żande nie przynosi oczekiwamego rezultatu (praktycznie nic sie nie dzieje)

1 użytkowników online, w tym zalogowanych: 0, gości: 1