共用方式為


多線程服務

服務控制管理員 (SCM) 會將服務控制事件傳送至服務的控制處理程式例程,以控制服務。 服務必須及時回應控制事件,讓 SCM 能夠追蹤服務的狀態。 此外,服務的狀態必須符合其 SCM 接收之狀態的描述。

由於服務與 SCM 之間的這種通訊機制,您在服務中使用多個線程時必須小心。 當服務被 SCM 指示停止時,它必須等候所有線程結束,再向 SCM 回報服務已停止。 否則,SCM 可能會對服務的狀態感到困惑,而且可能無法正確關閉。

SCM 必須通知服務正在回應停止控制事件,以及正在停止服務中的進度。 如果服務在先前 呼叫 setServiceStatus中指定的時間(等候提示)內回應(透過 SetServiceStatus),而且檢查點會更新為大於上一次呼叫中指定 SetServiceStatus的檢查點,則 SCM 會假設服務正在進行中。

如果服務向 SCM 回報服務已在所有線程結束之前停止,則 SCM 可能會將此解譯為矛盾。 這可能會導致無法停止或重新啟動服務的狀態。