![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Закрытие программы после ошибки [D7, WinXP]
NovaPS © (2004-06-28 20:56:00)В неком потоке возникает ошибка. Производится ее перехват и обработка. Далее в MessageBox пользователь выбирает проигнорировать и идти дальше или закрыть программу.
С первым случаем проблем нет, а вот со вторым (закрыть программу) возникли проблемы, т.е. программа ни в какую не хочет закрываться.
Пожалуйста объясните как это можно сделать?
Заранее благодарен.
Код:
...
{ Thread class description }
TLEThread = class(TThread)
...
protected
procedure Execute; override;
end;
procedure CloseApp; forward;
var
LEForm: TLEForm;
LEThread: TLEThread;
...
procedure TLEForm.ProceedBtnClick(Sender: TObject);
begin
if ThreadIsRunning = false then
begin
LEThread := TLEThread.Create(True);
LEThread.Priority := tpIdle;
LEThread.FreeOnTerminate := True;
LEThread.Resume;
end;
end;
procedure TLEThread.Execute;
...
try
LEForm.FTPClient.Get(LnksHostSitePath + TMPStr, LnksLocalPath + TMPStr, True);
except
on E: Exception do ErrMsg(E.Message, FTPCurHost, LnksHostSitePath + TMPStr, 3);
end;
...
end;
procedure TLEThread.ErrMsg(ErrorText, Host, FName: String; PhaseType: Integer);
...
MBoxResult := MessageBox(0, PChar(MsgText), 'Произошла ошибка!', MB_OKCANCEL);
if MBoxResult = 2 then CloseApp;
end;
procedure CloseApp;
begin
LEThread.Suspend; ???
LEThread.Terminate; ???
LEThread.Free; ???
LEForm.Close; ???
end;
end.
NovaPS (2004-06-28 22:04:00) [1]Спасибо, помогло.
Mim1 (2004-06-28 21:59:00) [2]Application.treminate в sincronyze;
или
TerminateProcess(getcurrentprocess);