c# - 安装后设置服务依赖

标签 c# database windows-services

我有一个作为 Windows 服务运行的应用程序。它将各种事物设置存储在数据库中,服务启动时会查找这些设置。我构建的服务支持各种类型的数据库(SQL Server、Oracle、MySQL 等)。最终用户经常选择配置软件以使用 SQL Server(他们可以简单地使用连接字符串修改配置文件并重新启动服务)。问题是,当他们的机器启动时,SQL Server 通常在我的服务之后启动,所以我的服务在启动时出错,因为它无法连接到数据库。我知道我可以为我的服务指定依赖项,以帮助引导 Windows 服务管理器在我之前启动适当的服务。但是,我不知道在安装时(当我的服务被注册时)要依赖哪些服务,因为用户可以稍后更改数据库。

所以我的问题是:有没有办法让用户根据他们正在使用的数据库手动指示服务依赖项?如果不是,我应该采用什么正确的设计方法?我考虑过尝试做一些事情,比如在我的服务启动后等待 30 秒,然后再连接到数据库,但由于各种原因,这看起来真的很不稳定。我还考虑过尝试“懒惰地”连接到数据库;问题是我需要在启动时立即建立连接,因为数据库包含我的服务首次启动时需要的各种重要信息。有什么想法吗?

最佳答案

丹尼斯 你要找的是 SC.exe。这是一个命令行工具,用户可以使用它来配置服务。

sc [Servername] Command Servicename [Optionname= Optionvalue...]

更具体地说,你会想使用

sc [ServerName] config ServiceName depend=servicetoDependOn

这是 SC.EXE 类命令选项的链接 http://msdn.microsoft.com/en-us/library/ms810435.aspx

关于c# - 安装后设置服务依赖,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2850707/

相关文章:

java - 如何将移动应用程序连接到数据库

database - 将 OWL 本体转换为关系数据库

c# - 从控制台应用程序创建 Windows 服务

C#:将年份列表构建为整数

c# - Securepay 支付网关集成问题

c# - IEnumerable 的非通用版本是否支持延迟执行?

php - 无法创建正确的查询

c# - 在没有 xml 文件的情况下在 c# 中使用 log4net

.net - 更改正在运行的进程 session ID 和 lpDesktop?

c# - 如何用所选文本中的实际类型替换多个 var 关键字?