![]() |
Модераторы: Daevaorn |
![]() ![]() ![]() |
|
Keeper_Andrew |
|
|||
Новичок Профиль Группа: Участник Сообщений: 16 Регистрация: 21.10.2002 Репутация: нет Всего: нет |
Я сделал на VC++ .NET приложение-сервис на основе ATL и зарегистрировал его.
Простенький такой сервис. Но одна проблема. Он автоматически после запуска останавливается. Я мог бы перегрузить WinMain и аккуратно поставить в нем пустой цикл, но думаю что это не лучший метод. Если у кого-нибудь есть опыт работы с ATL и сервисами подскажите плиз как лучше всего отключить автостоп. |
|||
|
||||
Baa |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 2639 Регистрация: 12.4.2002 Где: Москва Репутация: 8 Всего: 12 |
Дык ясно дело, что он будет останавливаться... ведь он ничего не делает? по завершению всех действ сервис завершается... ничего необычного... эт не автостоп, это простое завершение приложения.
-------------------- "Duty is everything; the greatest of joys, the deepest of sorrows" Aribeth de Tylmarande |
|||
|
||||
Keeper_Andrew |
|
|||
Новичок Профиль Группа: Участник Сообщений: 16 Регистрация: 21.10.2002 Репутация: нет Всего: нет |
А мне нужно, чтобы сервис не завершался, пока его не "попросят". Ставить цикл?
|
|||
|
||||
Baa |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 2639 Регистрация: 12.4.2002 Где: Москва Репутация: 8 Всего: 12 |
Keeper_Andrew ставь
![]() -------------------- "Duty is everything; the greatest of joys, the deepest of sorrows" Aribeth de Tylmarande |
|||
|
||||
Keeper_Andrew |
|
|||
Новичок Профиль Группа: Участник Сообщений: 16 Регистрация: 21.10.2002 Репутация: нет Всего: нет |
ОТвет неправильный.
Я нашел путь. Надо просто перегрузить два метода у CAtlServiceModuleT HRESULT CTDServerModule::PreMessageLoop(int nShowCmd) { return __super::PreMessageLoop(nShowCmd); } HRESULT CTDServerModule::PostMessageLoop() { return __super::PostMessageLoop(); } |
|||
|
||||
Baa |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 2639 Регистрация: 12.4.2002 Где: Москва Репутация: 8 Всего: 12 |
И с какой целью их перегружать?
PreMessageLoop вызывается перед тем, как сервис войдет в цикл, соотв. PostMessageLoop вызовется после выхода из цикла... обычно первое использьуется для добавления кода инициализации, а последнее для очистки по завершению... з.ы. я ATL сервисы никогда не писал, но прост уже интересно... -------------------- "Duty is everything; the greatest of joys, the deepest of sorrows" Aribeth de Tylmarande |
|||
|
||||
![]() ![]() ![]() |
Правила форума "С++:Общие вопросы" | |
|
Добро пожаловать!
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |