2017-01-30 3 views
0

Я новичок в C++ и приложении для работы с окнами.

Я не могу использовать ATL для обслуживания окон.

Я хочу написать базовый код для службы Windows, который понимает их.C++ как прекратить обслуживание во время выполнения работы и процесса

сейчас, я пишу кода для службы Windows, что в одном цикле существует:

for (int i = 0; i < 600; i++) // for this source 600 equal 1 hours 

Теперь я хочу, если пользователь в i = 100SCM щелкнул stop the service, это forloop в любом i, break и сервис будет остановить ,

Может ли кто-нибудь мне помочь?

+0

Если у вас есть * long * running loop (если вы не делаете что-то, что занимает много времени, цикл, повторяющийся всего 600 раз, был бы очень коротким), вы можете опросить SCM внутри цикла, чтобы проверить запросы на остановку. –

+0

600 цикл в моем источнике составляет 1 час. – Joo

+0

Это часть «за исключением». Итак, опробуйте SCM несколько раз внутри цикла? И если код ждет событий, добавьте события из SCM в список событий для прослушивания. –

ответ

0

хорошо, я стараюсь и получить самое лучшее решение:

  1. вы должны использовать нить
  2. и вы должны добавить событие в вашей программе
  3. В конце концов, вы можете использовать код последующей для проверки произошло событие или нет?

    WaitForSingleObject (g_ServiceStopEvent, 0) = WAIT_OBJECT_0

Примечание: не забудьте в функции ServiceCtrlHandler вы должны использовать:

in case SERVICE_CONTROL_STOP use : SetEvent(g_ServiceStopEvent); 

бог удачи