我已经创建了一个Windows服务,我想在Windows启动时运行它。要仅在启动完成后运行它,我已在服务安装程序中插入以下代码:
this.WinSvcInstaller.DelayedAutoStart = true;
使用以下代码使服务在安装后立即运行:
private void WinSvcInstaller_AfterInstall(object sender, InstallEventArgs e)
{
ServiceController sc = new ServiceController(ServiceName);
sc.Start();
}
其中ServiceName
是在WinSvcInstaller中创建的属性。
一旦服务完成,无论是成功还是失败,它都会自动停止使用以下代码:
ProjectInstaller projectInstaller = new ProjectInstaller();
ServiceController serviceController = new ServiceController(projectInstaller.ServiceName);
if (serviceController.Status.Equals(ServiceControllerStatus.Running)
|| serviceController.Status.Equals(ServiceControllerStatus.StartPending))
{
this.Stop();
}
我的主要问题是除非我重启计算机意义,否则服务不会运行,只有在我重新启动计算机时服务才会运行。如果我关闭然后在关闭后再次手动启动计算机,则服务不会运行。任何人都可以帮助我为什么会这样?我缺少什么?