Форум: "Прочее";
Текущий архив: 2008.03.30;
Скачать: [xml.tar.bz2];
ВнизПочему Application.Terminate у меня не работает? =((( Найти похожие ветки
← →
Andrewtitoff © (2008-02-18 16:47) [0]Здравствуйте!, мне нужно перезапустить программу..., но почему то вот так все замечательно работает:
procedure TForm1.Button1Click(Sender: TObject);
var
FullProgPath: PChar;
begin
FullProgPath := PChar(Application.ExeName);
WinExec(FullProgPath, SW_SHOW);
Application.Terminate;
end;
А вот так не работает... =(((
Еще один экземпляр запускается, но старый не закрывается...
procedure TMyChat.TcpServer1Accept(Sender: TObject;
ClientSocket: TCustomIpClient);
var
......
begin
try
CurrentCommand:=ClientSocket.Receiveln;
......
if Copy(CurrentCommand,1,17)="Command : RESTART" then
begin
FullProgPath := PChar(Application.ExeName);
WinExec(FullProgPath, SW_SHOW);
Application.Terminate;
end;
........
← →
Dmitry S © (2008-02-18 17:24) [1]а не потому что Application.Terminate; выполняется в другом потоке?:)
← →
Andrewtitoff © (2008-02-18 18:53) [2]В смысле?, а как правильно то это сделать?
← →
TIF © (2008-02-18 18:56) [3]а не в If проблема? Может, условие не выполняется?
← →
Григорьев Антон © (2008-02-18 20:03) [4]
> Andrewtitoff © (18.02.08 18:53) [2]
> В смысле?, а как правильно то это сделать?
В том смысле, что для приёма соединений TServerSocket создаёт отдельную нить, и событие OnAccept вызывается в ней. Application.Terminate ставит WM_Quit в очередь сообщений текущей нити, а так как у вас только главная нить его обрабатывает, получается, что от вызова этого метода в другой нити нет никакого эффекта.
Делайте так:PostMessage(Application.Handle, WM_Close, 0, 0);
← →
Andrewtitoff © (2008-02-18 23:02) [5]2 TIF
Нет.., читай внимательнее...
2 Григорьев Антон
Пасибо!
Страницы: 1 вся ветка
Форум: "Прочее";
Текущий архив: 2008.03.30;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.045 c