Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować się zalogować lub zmienić katalog.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
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.