Jan 20, 2014
3 mins read
ServiceController這個類別可以用來控制Service的狀態 詳細的資訊請參考MSDN上面的文件
新增一個Windows Form應用程式來當範例
private void Btn_Start_Click(object sender, EventArgs e) { // 設定服務 using (ServiceController objSC = new ServiceController("Service1")) { // 設定一個 Timeout 時間,若超過 30 秒啟動不成功就宣告失敗 TimeSpan timeout = TimeSpan.FromMilliseconds(1000 * 30);// 啟動服務 objSC.Start(); // 設定該服務必須在timeout時間內切換到Running狀態 objSC.WaitForStatus(ServiceControllerStatus.Running, timeout); }
}
private void Btn_Stop_Click(object sender, EventArgs e) { // 設定服務 using (ServiceController objSC = new ServiceController(“Service1”)) { // 若該服務不是「停用」的狀態,才將其停止運作,否則會引發 Exception
if (objSC.Status != ServiceControllerStatus.Stopped && objSC.Status != ServiceControllerStatus.StopPending) { // 設定一個 Timeout 時間,若超過30秒停止不成功就宣告失敗!
TimeSpan timeout = TimeSpan.FromMilliseconds(1000 * 30);// 停止服務 objSC.Stop(); // 設定該服務必須在timeout時間內切換到Stopped狀態 objSC.WaitForStatus(ServiceControllerStatus.Stopped, timeout); } }
}
private void Btn_CMD_128_Click(object sender, EventArgs e) { // 設定服務 using (ServiceController objSC = new ServiceController("Service1")) { if (objSC.Status == ServiceControllerStatus.Running) { objSC.ExecuteCommand(128); } } }
protected override void OnCustomCommand(int command) { switch (command) { case 128: break; case 129: break; case 130: break; default: break; } }
Sharing is caring!