| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > C/C++: Общие вопросы > Автостоп сервиса |
| Автор: Keeper_Andrew 17.2.2003, 03:24 |
| Я сделал на VC++ .NET приложение-сервис на основе ATL и зарегистрировал его. Простенький такой сервис. Но одна проблема. Он автоматически после запуска останавливается. Я мог бы перегрузить WinMain и аккуратно поставить в нем пустой цикл, но думаю что это не лучший метод. Если у кого-нибудь есть опыт работы с ATL и сервисами подскажите плиз как лучше всего отключить автостоп. |
| Автор: Baa 17.2.2003, 17:39 |
| Дык ясно дело, что он будет останавливаться... ведь он ничего не делает? по завершению всех действ сервис завершается... ничего необычного... эт не автостоп, это простое завершение приложения. |
| Автор: Keeper_Andrew 18.2.2003, 10:57 |
| А мне нужно, чтобы сервис не завершался, пока его не "попросят". Ставить цикл? |
| Автор: Baa 18.2.2003, 17:30 |
| Keeper_Andrew ставь |
| Автор: Keeper_Andrew 21.2.2003, 04:25 |
| ОТвет неправильный. Я нашел путь. Надо просто перегрузить два метода у CAtlServiceModuleT HRESULT CTDServerModule::PreMessageLoop(int nShowCmd) { return __super::PreMessageLoop(nShowCmd); } HRESULT CTDServerModule::PostMessageLoop() { return __super::PostMessageLoop(); } |
| Автор: Baa 21.2.2003, 17:34 |
| И с какой целью их перегружать? PreMessageLoop вызывается перед тем, как сервис войдет в цикл, соотв. PostMessageLoop вызовется после выхода из цикла... обычно первое использьуется для добавления кода инициализации, а последнее для очистки по завершению... з.ы. я ATL сервисы никогда не писал, но прост уже интересно... |