|
|
|
Прибить программу, находясь в потоке16.12.2010, 22:16. Показов 2311. Ответов 11
Метки нет (Все метки)
Имеется многопоточная программа. В потоке может совершиться некое иключительное нехорошее действие. При совершении этого действия на текущий момент самым надёжным решением было бы убить всю программу со всеми потоками БЕЗ сохранения конфигов (грубо говоря, чтобы НЕ вызвался деструктор главного окна и т.п.). При вызове Application->Terminate убивается только поток, а сама программа становится в раскоряку и что-то начинает чудить.
Как можно надёжно прибить всю программу из потока?
0
|
|
| 16.12.2010, 22:16 | |
|
Ответы с готовыми решениями:
11
Прибить Footer как прибить вирус Ждать или прибить |
|
3957 / 1812 / 184
Регистрация: 21.11.2009
Сообщений: 2,540
|
||||||||||||||||||||||
| 17.12.2010, 00:28 | ||||||||||||||||||||||
|
Вот так будет корректнее:
То есть, если поток метод (или объект) класса главной формы, то можно и
Не по теме: Как по мне, облегчает ношу - не нужно хранить где-нибудь указатель на главную форму, всё уже автоматизировано...
2
|
||||||||||||||||||||||
|
3957 / 1812 / 184
Регистрация: 21.11.2009
Сообщений: 2,540
|
|||
| 17.12.2010, 14:47 | |||
|
Из-за этого в MSDN сказано:
"Нормальному" завершению соответствует WM_CLOSE. Однако, WM_CLOSE инициирует проход по остальным событиям, в которых пользователь мог запретить завершение приложения (такие как OnCloseQuery, OnClose). Поэтому не всегда можно ожидать того, что приложение будет завершено.
0
|
|||
|
|
|
| 17.12.2010, 15:06 [ТС] | |
|
Т.е. сентенция какая? То, что написано в посте #2 не поможет?
Нужно делать ручками типа отправить сообщение (WM_USER) главному окну, а в обработкике главного окна (которое запустится именно в главном процессе, а не в потоке) запустить Apllication->Terminate?
0
|
|
|
3957 / 1812 / 184
Регистрация: 21.11.2009
Сообщений: 2,540
|
|||
| 17.12.2010, 15:12 | |||
|
Меня данный метод ещё ни разу не подвёл. Если просто Close(); и при этом не забывать о возможных запретах в OnCloseQuery и остановке потока - то стоит попробовать
0
|
|||
|
|
||||
| 17.12.2010, 15:16 [ТС] | ||||
|
0
|
||||
|
3957 / 1812 / 184
Регистрация: 21.11.2009
Сообщений: 2,540
|
||||||
| 17.12.2010, 15:48 | ||||||
PostQuitMessage не выполняется из потока. Для выполнения из потока нужно использовать PostMessage. Тобою было предложено отправлять WM_USER главному окну. Обработает сообщение основной поток, а поток, созданный тобою (второстепенный) всего лишь выполнит передачу сообщения основному. Что и называется "свистнуть". Это означает, что второстепенный поток не будет выполнять работу основного.
1
|
||||||
|
2742 / 1668 / 269
Регистрация: 19.02.2010
Сообщений: 4,413
|
|
| 18.12.2010, 00:18 | |
Сообщение было отмечено VTsaregorodtsev как решение
Решение
WinAPI рулило, рулит и будет рулить
![]() ExitProcess(0) надежнейшим образом убивает прогу из любого её потока. Деструкторы созданных в программе объектов при этом не вызываются (т.е. никакой "лишней" работы прога больше не выполнит - всю распределенную память очистит сама система, сама система закроет и все открытые файлы и прочие дескрипторы виндовозовских объектов).
1
|
|
|
|
|||||||
| 19.12.2010, 17:43 [ТС] | |||||||
|
А как можно убить только текущий поток?
Добавлено через 3 минуты На текущий момент заиспользовал ExitProcess, а то с WM_DESTROY что-то слишком умно получается Добавлено через 9 минут
0
|
|||||||
| 19.12.2010, 17:43 | |
|
Помогаю со студенческими работами здесь
12
Не возможно прибить HpUI.exe Как прибить Acknowledge [Ethernet] Не получается прибить блок к низу recv в отдельном потоке блокирует программу
Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Очистка реквизитов документа при копировании
Maks 09.04.2026
Алгоритм из решения ниже применим как для типовых, так и для нетиповых документов на самых различных конфигурациях.
Задача: при копировании документа очищать определенные реквизиты и табличную. . .
|
модель ЗдравоСохранения 8. Подготовка к разному выполнению заданий
anaschu 08.04.2026
https:/ / github. com/ shumilovas/ med2. git
main ветка * содержимое блока дэлэй из старой модели теперь внутри зайца новой модели
8ATzM_2aurI
|
Блокировка документа от изменений, если он открыт у другого пользователя
Maks 08.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа, разработанного в конфигурации КА2.
Задача: запретить редактирование документа, если он открыт у другого пользователя.
/ / . . .
|
Система безопасности+живучести для сервера-слоя интернета (сети). Двойная привязка.
Hrethgir 08.04.2026
Далее были размышления о системе безопасности. Сообщения с наклонным текстом - мои.
А как нам будет можно проверить, что ссылка наша, а не подделана хулиганами, которая выбросит на другую ветку и. . .
|
|
Модель ЗдрввоСохранения 7: больше работников, больше ресурсов.
anaschu 08.04.2026
работников и заданий может быть сколько угодно, но настроено всё так, что используется пока что только 20%
kYBz3eJf3jQ
|
Дальние перспективы сервера - слоя сети с космологическим дизайном интефейса карты и логики.
Hrethgir 07.04.2026
Дальнейшее ближайшее планирование вывело к размышлениям над дальними перспективами. И вот тут может быть даже будут нужны оценки специалистов, так как в дальних перспективах всё может очень сильно. . .
|
Горе от ума
kumehtar 07.04.2026
Эта мне ментальная установка, что вот прямо сейчас, мол, мне для полного счастья не хватает (нужное вписать), и когда я этого достигну - тогда и полный кайф. Одна из самых сильных ловушек на пути. . . .
|
Использование значений реквизитов справочника в документе, с определенными условиями и правами
Maks 07.04.2026
1. Контроль срока действия договора
Алгоритм из решения ниже реализован на примере нетипового документа "ЗаявкаНаРаботу", разработанного в конфигурации КА2.
Задача: уведомлять пользователя, если. . .
|