Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Delphi Новый топик    Ответить
Топик располагается на нескольких страницах: [1] 2   вперед  Ctrl      все
 Программа не закрывается полностью  [new]
Pcrepair
Member

Откуда:
Сообщений: 589
Добрый день. Есть следующая ситуация :
- программа (многопоточная загрузка веб-страниц и картинок)
- ОС ВЫНь7сп1 х64 (но прога х32)
- при запуске прога делает все что предписано, видно
в диспетчере задач что число потоков вначале 3(запуск проги)
потом до 20 (загрузка) потом падает до 6, хотя все уже загруженно(
но там есть еще диспетчеры, которые то же потоки )

Если принудительно закрыть программу(крестик) то в ВЫНь7 в диспетчере задач
прога почемуто по прежнему висит (в ХР кстати все как положено, без проблем - проверял)

что бы полностью закрыть прогу нужно в диспетчере прибить процесс. прога висит реально,
если запустить компилляцию то РАДХЕ3 выставит отказ

Запуск проги с правами админа или без ни на что не влияет

Вопрос : никто не в курсе что это за особенности работы под ВЫНь7?
16 фев 17, 15:52    [20218219]     Ответить | Цитировать Сообщить модератору
 Re: Программа не закрывается полностью  [new]
Ghost Writer
Member

Откуда: Россия
Сообщений: 614
16 фев 17, 15:56    [20218249]     Ответить | Цитировать Сообщить модератору
 Re: Программа не закрывается полностью  [new]
Pcrepair
Member

Откуда:
Сообщений: 589
а что нибуть умное?
16 фев 17, 15:58    [20218256]     Ответить | Цитировать Сообщить модератору
 Re: Программа не закрывается полностью  [new]
чччД
Guest
Pcrepair
а что нибуть умное?

Отладку/логирование тоже не предлагать?
16 фев 17, 16:02    [20218278]     Ответить | Цитировать Сообщить модератору
 Re: Программа не закрывается полностью  [new]
YuRock
Member

Откуда: Донецк
Сообщений: 1697
Pcrepair
никто не в курсе что это за особенности работы под ВЫНь7?

Нет никаких особенностей. На XP просто везло, частный случай был какой-то.

Покрутив шар, могу сказать, что скорее всего у тебя какие-то потоки зависают и не заканчиваются (возможно, если это потоки TThread, ты в них поставил FreeOnTerminate=True и вообще не следишь за их окончанием работы).
16 фев 17, 16:04    [20218290]     Ответить | Цитировать Сообщить модератору
 Re: Программа не закрывается полностью  [new]
Pcrepair
Member

Откуда:
Сообщений: 589
вопрос вообще то не о потоках.
почему форма программы закрывается, а вот в диспетчере задач прога по прежнему висит. почему ВЫНь считает себя умнее оператора (который дал команду сдохнуть) и как это своеволие ликвидировать
16 фев 17, 16:16    [20218359]     Ответить | Цитировать Сообщить модератору
 Re: Программа не закрывается полностью  [new]
YuRock
Member

Откуда: Донецк
Сообщений: 1697
Pcrepair
почему форма программы закрывается, а вот в диспетчере задач прога по прежнему висит.

Форму закрыть - это не прогу закрыть.
Pcrepair
почему ВЫНь считает себя умнее оператора

Она умнее не только оператора, верно считает.
16 фев 17, 16:24    [20218403]     Ответить | Цитировать Сообщить модератору
 Re: Программа не закрывается полностью  [new]
Pcrepair
Member

Откуда:
Сообщений: 589
в ХР форму закрыть = прогу закрыть
но похоже по 7 мало кто что знает, больше догадки
16 фев 17, 16:32    [20218463]     Ответить | Цитировать Сообщить модератору
 Re: Программа не закрывается полностью  [new]
_Vasilisk_
Member

Откуда: Украина, Харьков
Сообщений: 9540
Pcrepair
вопрос вообще то не о потоках.
Именно о них
Pcrepair
почему форма программы закрывается, а вот в диспетчере задач прога по прежнему висит
Потому что процесс завершается, когда завершаются ВСЕ потоки процесса
Pcrepair
. почему ВЫНь считает себя умнее оператора (который дал команду сдохнуть)
Нет. Пользователь дал команду закрыть окно. Все остальное на совести программиста. Если пользователь хочет убить программу - он открывает диспетчер задач
Pcrepair
как это своеволие ликвидировать
Пригласить на работу программиста
16 фев 17, 16:33    [20218470]     Ответить | Цитировать Сообщить модератору
 Re: Программа не закрывается полностью  [new]
JaDi
Member

Откуда: JayDi из Сызрани
Сообщений: 2678
Вот вы прикалываетесь, а у меня одно время был похожий баг -- из-за неправильной последовательности создания/уничтожения форм глючили двеэкспрессовские компоненты (формы со скинами мигали при закрытии приложения, всякие стайл-контроллеры уничтожались с AV и т.п. бяки).

P.S. Автору надо корректно отрабатывать завершение потоков (чтобы они правильно отлавливали команду на завершение). Где-то тут были аналогичные темы с зависаниями потоков. 100% они виноваты.
16 фев 17, 16:44    [20218546]     Ответить | Цитировать Сообщить модератору
 Re: Программа не закрывается полностью  [new]
чччД
Guest
может, и в винде дело.
Помните, в вин7х64 появилось новое ограничение на длину очереди сообщений окну?
Теряется какой-нибудь месседж, в итоге какое-то окошко не знает, что пора закрыться.
Помнится, для всл был какой-то патч или модуль для коррекции этого.
Мне когда-то помогло.
16 фев 17, 16:52    [20218590]     Ответить | Цитировать Сообщить модератору
 Re: Программа не закрывается полностью  [new]
wadman
Member

Откуда: Санкт-Петербург
Сообщений: 22476
Pcrepair
почему ВЫНь считает себя умнее оператора (который дал команду сдохнуть) и как это своеволие ликвидировать

Тоже бесит, когда винамп закрываешь, а он лишь сворачивается.
Это все из-за кривой винды?
16 фев 17, 16:52    [20218595]     Ответить | Цитировать Сообщить модератору
 Re: Программа не закрывается полностью  [new]
Dimitry Sibiryakov
Member

Откуда:
Сообщений: 43204

Pcrepair
Есть следующая ситуация

Валидный код ты писать научился. Теперь учись писать правильный.

Posted via ActualForum NNTP Server 1.5

16 фев 17, 17:06    [20218660]     Ответить | Цитировать Сообщить модератору
 Re: Программа не закрывается полностью  [new]
Bred eFeM
Member

Откуда:
Сообщений: 429
Pcrepair
в ХР форму закрыть = прогу закрыть
но похоже по 7 мало кто что знает, больше догадки
делай так:
procedure TForm7.FormClose(Sender: TObject; var Action: TCloseAction);
begin
 ExitProcess(0000000);
end;
16 фев 17, 18:55    [20219056]     Ответить | Цитировать Сообщить модератору
 Re: Программа не закрывается полностью  [new]
YuRock
Member

Откуда: Донецк
Сообщений: 1697
Bred eFeM
делай так:
procedure TForm7.FormClose(Sender: TObject; var Action: TCloseAction);
begin
 ExitProcess(0000000);
end;

Надежнее так, а то вдруг в Finalization исключения возникнут:
procedure TForm7.FormClose(Sender: TObject; var Action: TCloseAction);
begin
  TerminateProcess( GetCurrentProcess, 12345678 );
end;
16 фев 17, 19:07    [20219097]     Ответить | Цитировать Сообщить модератору
 Re: Программа не закрывается полностью  [new]
чччД
Guest
А если до .FormClose() дело не доходит?
16 фев 17, 19:39    [20219178]     Ответить | Цитировать Сообщить модератору
 Re: Программа не закрывается полностью  [new]
_Vasilisk_
Member

Откуда: Украина, Харьков
Сообщений: 9540
YuRock
Надежнее так, а то вдруг в Finalization исключения возникнут:
Какой Finalization после ExitProcess?
16 фев 17, 19:39    [20219179]     Ответить | Цитировать Сообщить модератору
 Re: Программа не закрывается полностью  [new]
YuRock
Member

Откуда: Донецк
Сообщений: 1697
_Vasilisk_
Какой Finalization после ExitProcess?

ExitProcess is the preferred method of ending a process. This function provides a clean process shutdown. This includes calling the entry-point function of all attached dynamic-link libraries (DLLs) with a value indicating that the process is detaching from the DLL.
16 фев 17, 19:51    [20219210]     Ответить | Цитировать Сообщить модератору
 Re: Программа не закрывается полностью  [new]
_Vasilisk_
Member

Откуда: Украина, Харьков
Сообщений: 9540
YuRock
entry-point function of all attached dynamic-link libraries
YuRock
в Finalization исключения возникнут:
Отличий не замечаешь?
16 фев 17, 20:21    [20219272]     Ответить | Цитировать Сообщить модератору
 Re: Программа не закрывается полностью  [new]
Alexander Zuev
Member

Откуда:
Сообщений: 7
А старый добрый Halt? :)
16 фев 17, 20:31    [20219298]     Ответить | Цитировать Сообщить модератору
 Re: Программа не закрывается полностью  [new]
YuRock
Member

Откуда: Донецк
Сообщений: 1697
_Vasilisk_
YuRock
entry-point function of all attached dynamic-link libraries
YuRock
в Finalization исключения возникнут:
Отличий не замечаешь?
Чего от чего?
17 фев 17, 01:44    [20219820]     Ответить | Цитировать Сообщить модератору
 Re: Программа не закрывается полностью  [new]
kealon(Ruslan)
Member

Откуда: Нижневартовск
Сообщений: 1741
Pcrepair,

OnTerminate или Application.ProcessMessages нигде не юзаешь?
как потоки убиваешь?
17 фев 17, 07:10    [20219919]     Ответить | Цитировать Сообщить модератору
 Re: Программа не закрывается полностью  [new]
_Vasilisk_
Member

Откуда: Украина, Харьков
Сообщений: 9540
Alexander Zuev
А старый добрый Halt? :)
Вот он вызывает финализацию всех юнитов и в конце дергает ExitProcess()
17 фев 17, 10:41    [20220255]     Ответить | Цитировать Сообщить модератору
 Re: Программа не закрывается полностью  [new]
YuRock
Member

Откуда: Донецк
Сообщений: 1697
_Vasilisk_
он вызывает финализацию всех юнитов и в конце дергает ExitProcess()

, который вызывает финализацию всех юнитов всех загруженных исполняемых модулей, кроме того, кто вызвал ExitProcess.
17 фев 17, 13:10    [20221002]     Ответить | Цитировать Сообщить модератору
 Re: Программа не закрывается полностью  [new]
Dimonka
Member

Откуда:
Сообщений: 902
YuRock
Bred eFeM
делай так:
procedure TForm7.FormClose(Sender: TObject; var Action: TCloseAction);
begin
 ExitProcess(0000000);
end;

Надежнее так, а то вдруг в Finalization исключения возникнут:
procedure TForm7.FormClose(Sender: TObject; var Action: TCloseAction);
begin
  TerminateProcess( GetCurrentProcess, 12345678 );
end;

Годные советы. Я бы ещё добавил - следующий дзен-уровень это вообще не запускать программу. :-)
Ну и дальше по списку - не включать компьютер..

ps. Придётся автору похоже поставить себе в конце концов Win7 и отлаживать программу на ней.
17 фев 17, 13:17    [20221034]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: [1] 2   вперед  Ctrl      все
Все форумы / Delphi Ответить