Jak mogę uruchomić i zatrzymać usługę Windows z aplikacji C# Form?Start stop Service from Form App C#
Odpowiedz
Dodaj odwołanie do System.ServiceProcess.dll
. Następnie możesz użyć klasy ServiceController.
Można zrobić to w ten sposób, Details of Service Controller
ServiceController sc = new ServiceController("your service name");
if (sc.Status == ServiceControllerStatus.Stopped)
{
sc.Start();
}
Podobnie można zatrzymać za pomocą metody zatrzymania
sc.Stop();
go nie rozpoznaje, używając System.ServiceProcess; - używam .net 4 – AlexandruC
Dodaj przestrzeń nazw, prawdopodobnie brakuje jej. – edocetirwi
Najpierw dodaj odniesienie do zestawu System.ServiceProcess.
Aby rozpocząć:
ServiceController service = new ServiceController("YourServiceName");
service.Start();
var timeout = new TimeSpan(0, 0, 5); // 5seconds
service.WaitForStatus(ServiceControllerStatus.Running, timeout);
Aby zatrzymać:
ServiceController service = new ServiceController("YourServiceName");
service.Stop();
var timeout = new TimeSpan(0, 0, 5); // 5seconds
service.WaitForStatus(ServiceControllerStatus.Stopped, timeout);
Oba przykłady pokazują, jak czekać, aż usługa osiągnęła nowy status (bieganie, zatrzymał się ... itd.). Parametr limitu czasu w WaitForStatus jest opcjonalny.
nie rozpoznaje tego przy użyciu System.ServiceProcess; - używam .net 4 – AlexandruC
Powinien działać dobrze, ale musisz dodać odniesienie do System.ServiceProcess. –
Dobrze! głupi ja. dzięki. wyraźny! – AlexandruC
jest brudniejsze, ale same same ..
tylko wykonywać polecenia powłoki
NET STOP "MYSERVICENAME"
NET START "MYSERVICENAME"
// Check whether the U-TEST RTC service is started.
ServiceController sc = new ServiceController();
sc.ServiceName = "U-TEST RTC";
m_objMainChainRTC.m_objUC.ValidationLogMessages(String.Format(LocalizeDictionary.Instance.GetLocalizedValue("MsgStatusService"), sc.Status.ToString()), Alstom.Automation.Forms.ViewModels.RTCAutomationViewModel.ColorLog.Log);
if (sc.Status == ServiceControllerStatus.Stopped)
{
m_objMainChainRTC.m_objUC.ValidationLogMessages(String.Format(LocalizeDictionary.Instance.GetLocalizedValue("MsgStartService")), Alstom.Automation.Forms.ViewModels.RTCAutomationViewModel.ColorLog.Log);
try
{
// Start the service, and wait until its status is "Running".
sc.Start();
var timeout = new TimeSpan(0, 0, 5); // 5seconds
sc.WaitForStatus(ServiceControllerStatus.Running, timeout);
m_objMainChainRTC.m_objUC.ValidationLogMessages(String.Format(LocalizeDictionary.Instance.GetLocalizedValue("MsgNowService"), sc.Status.ToString()), Alstom.Automation.Forms.ViewModels.RTCAutomationViewModel.ColorLog.Log);
}
catch (InvalidOperationException)
{
m_objMainChainRTC.m_objUC.ValidationLogMessages(String.Format(LocalizeDictionary.Instance.GetLocalizedValue("MsgExceptionStartService")), Alstom.Automation.Forms.ViewModels.RTCAutomationViewModel.ColorLog.Log);
}
}
nie rozpoznaje tego przy użyciu System.ServiceProcess; - używam .net 4 – AlexandruC
@lxClan dodaj odniesienie do twojego projektu – Zbigniew
Zaktualizowałem odpowiedź z referencją, którą musisz dodać. –