Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.06.20;
Скачать: CL | DM;

Вниз

Application.Terminate   Найти похожие ветки 

 
a3a3ello   (2004-06-05 18:50) [0]

Не могу завершить приложение с помощью Application.Terminate. Программа благополучно продолжает работать дальше. В чем дело?
Спасибо.


 
ikivio ©   (2004-06-05 19:36) [1]

Код в студию !


 
YurikGl ©   (2004-06-05 19:39) [2]

ikivio ©   (05.06.04 19:36) [1]

Может аппликейшн другой?


 
a3a3ello   (2004-06-05 19:51) [3]

аппликейшн у меня один.
А на счет кода. В одном из модулей есть процедура которая посылает сообщение об ошибке и завершает работу (должна завершать). Процедура вызывается из других процедур того же модуля. Может дело в том, что процедуры вложены несколько раз одна в другую ?

procedure SendErrorMSGandQuit();
begin
   Report(ErrTXT, GetDataForMail(0));
   Application.Terminate;
end;


 
Petr V. Abramov ©   (2004-06-05 20:21) [4]


repeat
try
  HandleMessage;
except
  HandleException(Self);
end;
until Terminated;


 Это цитата из TApplication.Run
Application.Terminate всего лишь выставляет флажок Terminated, по которому прекращается цикл обработки сообщений. И от момента его выставления до момента проверки может пройти года 3 ( если приложение чего-то ждет)
 Это одно из напрвлений копания.


 
a3a3ello   (2004-06-05 20:32) [5]

2Petr V. Abramov
Мое приложение ни чего не ждет. Оно продолжает работать как будто ни чего не произошло. Terminated я проверял оно стоит False.


 
Marser ©   (2004-06-05 20:36) [6]


> Может аппликейшн другой?

Прикольно... Если такое и возможно(в чем сомневаюсь), подобные вопросы вряд ли бы возникли.


 
lyeh ©   (2004-06-06 00:21) [7]

Может в Form.OnCloseQuery чего не так, вроде CanClose:=FALSE


 
KilkennyCat ©   (2004-06-06 00:25) [8]

Значит, просто не доходит вызов до него.

procedure SendErrorMSGandQuit();
begin
  Report(ErrTXT, GetDataForMail(0));
  Showmessage("ща вырублюсь");
  Application.Terminate;
end;


 
DrPass ©   (2004-06-06 00:53) [9]


> Оно продолжает работать как будто ни чего не произошло

Работать - в смысле обрабатывать сообщения пользователя? Нонсенс.
Или все-таки она что-то считает в "зависшем" положении? Тогда все правильно - выход осуществится лишь после окончания


 
Ihor Osov'yak ©   (2004-06-06 00:58) [10]

2  a3a3ello

Вероятнее всего, у вас присутствует некая излишняя увлеченность Application.ProcessMessages или иные способы организации альтернативного цыкла выборки сообщений + некоторая неаккуратность в реализации архитектуры приложения.

Поставте точку прерывания в SendErrorMSGandQuit, при срабатывании этой точки проанализируйте стек (Ctrl+F3) - возможно у Вас в стеке будет присутствовать несколько  Application.ProcessMessages - тогда ситуацию вашу  можно обьяснить. Application.Terminate приведет к вызову PostQuitMessage(0), который "перебьет" только внутренний Application.ProcessMessages. Конечно, флажок Application.Terminated при этом будет выставлен, но дело в том, что "внутренние" Application.ProcessMessages никак этого флажка не анализируют.. И на этих "внутренних" Application.ProcessMessages приложение может "жить"  довольно долго.. Лишь бы сообщения поступали, чтобы цыкл внутри  ProcessMessages из-за отсутствия сообщений не прерывался..


 
Ihor Osov'yak ©   (2004-06-06 01:03) [11]

2 [9] DrPass ©   (06.06.04 00:53)

Ну почему же?

Смотрим этот псевдокод:

Application.Terminate;
while TRUE do begin
  <что-то немножко делаем или считаем>
  Application.ProcessMessages;
end;

Здесь будет происходить примерно то, что описно в топике.

Конечно, в автора это может быть оформлено не в столь явном виде, но очень вероятно, что такой шедевр присутствует.



Страницы: 1 вся ветка

Текущий архив: 2004.06.20;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.047 c
11-1075533702
<Falcon>
2004-01-31 10:21
2004.06.20
Два маленьких глючка: KOLToolBar, MHUpDown


6-1082922406
Yanis
2004-04-25 23:46
2004.06.20
ICQ


1-1086270725
dimon_programmer
2004-06-03 17:52
2004.06.20
Как передать Bitmap из DLL в программу без ошибок


1-1086586867
ra4fcr
2004-06-07 09:41
2004.06.20
Формула в Excel


14-1086114076
ИМХО
2004-06-01 22:21
2004.06.20
Вопрос по США: Мазуту, Алексу Коншину и другим американцам