Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2005.01.30;
Скачать: [xml.tar.bz2];

Вниз

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

 
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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.47 MB
Время: 0.063 c
4-1102570024
NetDigger
2004-12-09 08:27
2005.01.30
Работа с окнами


14-1105627506
Cosinus
2005-01-13 17:45
2005.01.30
Хм... Глупый вопрос,но все же. Как удалить установленный Package?


14-1105516116
Anonimus
2005-01-12 10:48
2005.01.30
Windows XP home


1-1106181479
Алексей
2005-01-20 03:37
2005.01.30
Как удалять объекты, связаные с TTreeNode.Data


1-1105363936
MegaVolt
2005-01-10 16:32
2005.01.30
Две проблемки с TStringList





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский