Flertrådade tjänster
Service Control Manager (SCM) styr en tjänst genom att skicka tjänstkontrollhändelser till tjänstens kontrollhanterarrutin. Tjänsten måste svara på kontrollhändelser i tid så att SCM kan hålla reda på tjänstens tillstånd. Dessutom måste tjänstens tillstånd matcha beskrivningen av dess tillstånd som SCM tar emot.
På grund av den här kommunikationsmekanismen mellan en tjänst och SCM måste du vara försiktig när du använder flera trådar i en tjänst. När en tjänst instrueras att stoppas av SCM måste den vänta tills alla trådar avslutas innan den rapporterar till SCM att tjänsten har stoppats. Annars kan SCM bli förvirrad över tjänstens tillstånd och kan misslyckas med att stänga av på rätt sätt.
SCM måste meddelas om att tjänsten svarar på stoppkontrollhändelsen och att framsteg görs för att stoppa tjänsten. SCM förutsätter att tjänsten gör framsteg om tjänsten svarar (via SetServiceStatus) inom den tid (väntetips) som angavs i föregående anrop till SetServiceStatusoch kontrollpunkten uppdateras till större än den kontrollpunkt som angavs i föregående anrop till SetServiceStatus.
Om tjänsten rapporterar till den SCM som tjänsten har stoppat innan alla trådar har avslutats är det möjligt att SCM tolkar detta som en motsägelse. Detta kan leda till ett tillstånd där tjänsten inte kan stoppas eller startas om.