安装我的服务后,我有一个处理程序,它在安装后启动服务。
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() 函数?