當我的服務安裝時,我有一個處理程序在安裝後啓動服務。卸載時自動停止Windows服務
private void InitializeComponent()
{
...
this.VDMServiceInstaller.AfterInstall += ServiceInstaller_AfterInstall;
}
private void ServiceInstaller_AfterInstall(object sender, InstallEventArgs e)
{
ServiceController sc = new ServiceController("MyService");
sc.Start();
}
我想停止該服務被卸載之前,所以我增加了一個額外的處理程序的InitializeComponent()。
this.ServiceInstaller.BeforeUninstall += ServiceInstaller_BeforeUninstall;
,並添加了功能:
private void ServiceInstaller_BeforeUninstall(object sender, InstallEventArgs e)
{
try
{
ServiceController sc = new ServiceController("MyService");
if (sc.CanStop)
{
sc.Stop();
sc.WaitForStatus(System.ServiceProcess.ServiceControllerStatus.Stopped);
}
}
catch (Exception exception)
{}
}
但服務不卸載前停止。我是否正確使用ServiceController.Stop()函數?
不起作用。它幾乎就像該函數不會被調用,因爲該函數也應該引發BeforeUninstall事件。 –