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

Вниз

Как остановить работающую программу?   Найти похожие ветки 

 
pavel_guzhanov   (2005-01-13 13:56) [0]

Здравствуйте!
Подскажите пожалуйста, как закрыть программу во время выполнения в ней очень длинного цикла? У меня программа при работе показывает иконку в трее, у нее есть popup meny с одной командой - "Выход".
При работе программы выполняется очень длинный цикл (примерно минут 40). А мне надо, чтобы по команде "Выход" программа закрылась. Подскажите, как это можно сделать. Я предполагаю, что команду "Выход" надо подавать в отдельном потоке, а можно ли как то обойтись без отдельного потока? Подскажите, кто в курсе.
Заранее спасибо...


 
JK   (2005-01-13 14:06) [1]

В тело цикла вставь

Application.ProcessMessages;

Лучше, наверное, сделать цикл в отдельном потоке.


 
WhiteGuy ©   (2005-01-13 14:07) [2]

О, мужик! У меня схожая трабла - я рулю резак, и при разрезании бААААльшого файла прога винтик красиво насилует, а остановить:) этот процесс можно лишь перезагрузкой! Подключаюсь к вопросу!! ;-D


 
kaZaNoVa ©   (2005-01-13 14:11) [3]

ExitProcess
Halt


 
Neznaika ©   (2005-01-13 14:14) [4]

Не пойму чем не подходит Application.Terminate;
Может объясните?


 
KSergey ©   (2005-01-13 14:20) [5]

> [4] Neznaika ©   (13.01.05 14:14)
> Не пойму чем не подходит Application.Terminate;

Фигли оно у них сработает, если сообщения не проталкиваются
А в цикле - не проверяется флаг Application.Terminated


 
Neznaika ©   (2005-01-13 14:24) [6]

Аааа!


 
Zilog ©   (2005-01-13 17:44) [7]

тебе не Выход в поток надо а сам цикл...


 
Digitman ©   (2005-01-13 17:54) [8]


> О, мужик! У меня схожая трабла - я рулю резак,


именно НАСТОЯЩИЕ программеры именно так и формулирукют свою мысль)

1.не иначе как МУЖИК
2.не иначе как ТРАБЛА
3.не иначе как РУЛЮ (или не РУЛЮ - кому ведомо, что сие есть ?!)
4.не иначе как РЕЗАК ( ... что-то, вероятно, из терминологии слесаря-многостаночника..)

ай да не угадал ужели ?(


 
Virgo_Style   (2005-01-14 09:25) [9]

> [8] Иначе будет типа не круто. ;)

Если я правильно понял проблему, то мое решение:
1.var ExitFlag:boolean=false;
2.В начале процедуры ExitFlag:=false;
3.В цикле - Application.ProcessMessages;
4.Кнопка "Выход" (или пункт меню) устанавливает флаг ExitFlag
5.Цикл проверяет этот флаг, если он установлен - выходит досрочно.
Вот и все...
Еще можно ставить этот флаг где-нибудь в OnCloseQuery, например.

ExitProcess и Application.Terminate, imho, слишком жестоко :)


 
KSergey ©   (2005-01-14 12:56) [10]

> [9] Virgo_Style   (14.01.05 09:25)
> Application.Terminate, imho, слишком жестоко

Чем же? По сути оно тоже лишь взводит флаг...


 
pavel_guzhanov   (2005-01-14 15:05) [11]


> тебе не Выход в поток надо а сам цикл...



> Лучше, наверное, сделать цикл в отдельном потоке.


Действительно, цикл, и все, что с ним связано, убрал в отдельный поток. Помогло, теперь программа вырубается нормально. Спасибо



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

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

Наверх




Память: 0.49 MB
Время: 0.026 c
14-1105693028
Ega23
2005-01-14 11:57
2005.01.30
Что качать?


3-1104138893
Russko
2004-12-27 12:14
2005.01.30
Ошибка: "Данные редактируются другим пользователем"


14-1104993074
Бугага
2005-01-06 09:31
2005.01.30
Желудки :)


14-1105191129
Luba
2005-01-08 16:32
2005.01.30
конверсия форматов


9-1098607787
rydmi
2004-10-24 12:49
2005.01.30
Collusion.