powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Самоуничтожающийся объект
4 сообщений из 29, страница 2 из 2
Самоуничтожающийся объект
    #40066228
hlopotun
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
DmSer
Dimitry Sibiryakov

пропущено...

Код: sql
1.
2.
initialization
   TMyThread.Create(false).FreeOnTerminate := true;




По собственному опыту могу сказать, что так делать не нужно. В наших программах было несколько мест, где старт потоков выполнялся в секции initialization. Иногда (один раз из 100) при запуске программ возникали различные странные ошибки, зачастую процесс тут же вырубался. Долго разбирались. Оказалось, что виновник - это создание потока в секции initialization EXE-файла (про DLL даже и не говорю). После переноса в другие места (например, в OnFormCreate), программа запускается в 100% случаев.
Гоняли с помощью такого батника:
Код: powershell
1.
2.
3.
4.
for /l %%i in (1,1,1000) do (
echo %%i
C:\AppPath\App.exe /CloseAfterStart
)


В DPR-файле Exit делали сразу после BEGIN. Перед Exit писали сообщение в лог.


в моём случае запуск происходит в OnFormShow основной формы которая автоматом запускается при старте программы. Поток опрашивает web сервис и шлёт сообщение которое показывает маску с информацией о новой версии программы (если таковая есть). Информация о версии передаётся из web сервиса и далее в процедуру получающую сообщение через базу. Если пользователь достаточно быстро нажал закрытие программы то компоненты читающие/пишущие в из базы/в базу могут перестать существовать (по крайней мере так я понимаю выскакивающее исключение). Можно конечно анализировать перед каждым обращением к компоненту существует он ещё или нет но такое решение выглядит некрасиво т.к. теоретически компонент может ещё сушествовать а компонент с которым он работает уже быть уничтожен. Хотелось бы немедленного завершения сервиса в ситуации закрытия приложения.
Какие ещё тут могут быть идеи? Отсылка сообщения процессу из OnClose основной формы?

Спасибо.
...
Рейтинг: 0 / 0
Самоуничтожающийся объект
    #40066240
ъъъъъ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
hlopotun,

делаешь криво, неудобно, нелогично. Почему апдейтер должен завершаться при завершении основного приложения?
Почему не задавить "проблему" в зародыше и не сделать твой апдейтер в виде отдельного процесса? Сразу исчезают перечисленные тобой "трудности" и получаешь офигенный ништяк в виде независимой от работы юзера с основным приложением. Приложение - апдейтер можно всякий раз запускать при старте приложения, можно при старте ОС. Легко отлаживать, легко изменять, легко использовать.
...
Рейтинг: 0 / 0
Самоуничтожающийся объект
    #40066248
DmSer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Не выставляйте FreeOnTerminate, никто не будет исчезать!
...
Рейтинг: 0 / 0
Самоуничтожающийся объект
    #40066264
hlopotun
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ъъъъъ
hlopotun,

делаешь криво, неудобно, нелогично. Почему апдейтер должен завершаться при завершении основного приложения?
Почему не задавить "проблему" в зародыше и не сделать твой апдейтер в виде отдельного процесса? Сразу исчезают перечисленные тобой "трудности" и получаешь офигенный ништяк в виде независимой от работы юзера с основным приложением. Приложение - апдейтер можно всякий раз запускать при старте приложения, можно при старте ОС. Легко отлаживать, легко изменять, легко использовать.


там самого обновления не происходит, только выводится информация с оссылками где почитать и где скачать. Причём в зависимости от пользователя который зашел в программу. Тётушкам из бухгалтерии ненадо ничего показывать а админу или технарю самое оно. Потому из программы (после того как пользователь введён).
...
Рейтинг: 0 / 0
4 сообщений из 29, страница 2 из 2
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Самоуничтожающийся объект
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]