Usługi wielowątkowe
Menedżer kontroli usług (SCM) kontroluje usługę, wysyłając zdarzenia kontroli usługi do procedury obsługi sterowania usługi. Usługa musi reagować na zdarzenia w odpowiednim czasie, aby program SCM mógł śledzić stan usługi. Ponadto stan usługi musi być zgodny z opisem stanu odbieranego przez program SCM.
Ze względu na ten mechanizm komunikacji między usługą a usługą SCM należy zachować ostrożność podczas korzystania z wielu wątków w usłudze. Gdy usługa zostanie poinstruowana o zatrzymaniu przez program SCM, musi poczekać, aż wszystkie wątki zakończą się przed zgłoszeniem do SCM, że usługa została zatrzymana. W przeciwnym razie program SCM może stać się zdezorientowany stanem usługi i może nie zostać poprawnie zamknięty.
Zdarzenie SCM musi zostać powiadomione, że usługa odpowiada na zdarzenie zatrzymania sterowania i że postęp jest wprowadzany w zatrzymywaniu usługi. SCM zakłada, że usługa postępuje, jeśli usługa reaguje (za pośrednictwem SetServiceStatus) w czasie (wskazówka oczekiwania) określona w poprzednim wywołaniu SetServiceStatus, a punkt kontrolny jest aktualizowany jako większy niż punkt kontrolny określony w poprzednim wywołaniu SetServiceStatus.
Jeśli usługa zgłasza zdarzenie SCM, że usługa została zatrzymana przed zamknięciem wszystkich wątków, możliwe jest, że SCM zinterpretuje to jako sprzeczność. Może to spowodować wystąpienie stanu, w którym nie można zatrzymać ani ponownie uruchomić usługi.