Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > 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 ставь smile.gif

Автор: 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 сервисы никогда не писал, но прост уже интересно...

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)