在Windows服务启动之间创建依赖关系

sta*_*ser 22 c# windows windows-services .net-4.0

我创建了一个设置为自动启动的Windows服务.此服务在启动时连接到数据库服务.问题是数据库服务似乎是在我的服务之后启动的.是否有一种编程方式来定义此依赖项,以便在数据库服务启动后启动我的服务.

我发现这篇文章http://www.boyce.us/windows/servertipcontent.asp?ID=7谈到添加一个注册表项来做到这一点.我想知道是否有C#方式来做到这一点?

更新:

添加到上面的问题.这是另一种情况.使用installshied安装服务,不需要projectinsaller.似乎installshield查找从ServiceBase类派生的类并安装每个服务.如何在这种情况下添加依赖项?

Jay*_*ggs 29

您正在为项目的ServiceInstaller组件寻找ServiceInstaller.ServicesDependedOn属性.

从文章的备注部分(我加粗了你感兴趣的部分):

服务可以在启动之前要求其他服务运行.此属性的信息将写入注册表中的密钥.当用户(或系统,在自动启动的情况下)尝试运行服务时,服务控制管理器(SCM)会验证阵列中的每个服务是否已经启动.

如果阵列中的任何服务未运行,则SCM会尝试启动它们.这包括具有Manual StartType的服务.

如果此服务所依赖的任何服务无法启动,则此服务将无法启动.如果未启动系统,则不会引发异常,因为系统级别没有异常处理来检测此情况.确定如何处理服务启动失败并在代码中实现此操作.通常,如果服务无法启动,则会在启动时向用户显示一个对话框.

如果服务未启动,则会将一个条目写入应用程序事件日志.

此服务所依赖的服务不需要在同一个可执行文件中.