我試圖控制應用程序內的服務。通過StartService啓動服務(MSDN)工作正常,該服務需要大約10秒才能啓動,但在調用StartService之後,它立即將控制權返回給主應用程序。異步停止Windows服務
但是,當通過ControlService停止服務時(MSDN) - AFAIK沒有停止服務 - 它會阻塞主應用程序一段時間,直到服務停止,這大約需要10秒。
Start: StartServiceW(handle, 0, NULL)
Stop: ControlService(handle, SERVICE_CONTROL_STOP, status)
有沒有一種非阻塞/異步停止Windows服務的方法?
你是否嘗試從線程調用它?將阻塞呼叫轉變爲非阻塞呼叫的經典方法... – 2012-08-15 16:35:21
我不知道如何,但'sc'命令允許您停止服務而不會阻塞它。嘗試尋找有趣的API函數。 – wilx 2012-08-15 16:38:29
有沒有一種特定的服務是以這種方式表現的,還是所有這些服務?我的猜測是有問題的服務沒有正確響應STOP請求。 – 2012-08-15 22:37:13