2015-01-16 56 views
0

我们有用C#(.Net3.5)编写的Windows服务。运行时完美。然而,我们的支持人员报告说,尽管它可以始终手动启动,但在Windows重新启动时,它不会始终自动启动。为什么Windows服务不自动启动?

我注意到这可能与其他服务(它依赖于它)本身并没有启动,但据我所知,除了它自己的登录服务代码不依赖于其他任何东西(服务属性选项卡报告没有依赖关系)。此外,服务OnStart方法的第一行是一个Thread.Sleep(60000),以确保所有其他服务都有机会启动。服务器是Windows Server 2008 R1,所以通过我的推算60秒应该是绰绰有余。

我的问题是:

  1. 我怎样才能清楚它的依赖?
  2. 是否有任何其他众所周知的.Net服务不能自动启动的原因?

TIA

+0

这可能对您有帮助http://msdn.microsoft.com/en-us/library/ddhy0byf %28v = VS.90%29.aspx –

+0

沉睡在OnStart是一个非常糟糕的主意 - 调用OnStart的线程不属于你 - 你打算让事情开始并及时退出OnStart。另外,除非*你*已经告诉窗口关于你的依赖关系,否则你不会看到任何服务依赖关系。 –

+0

好的,也许这是不好的建议(来自这个论坛的另一个问题/答案)。但是,我怎么知道'依赖关系'是什么?代码不会访问任何其他日志记录到Sql Server(可能在同一台计算机上),并且它不需要任何其他Windows服务本身,据我所知。 –

回答

0

设置窗口服务启动类型为 “ServiceStartMode.Automatic” 应该帮助。

serviceInstaller1.StartType = ServiceStartMode.Automatic; 

这行代码告诉操作系统在系统启动时启动相关的Windows服务。此外,如果自动启动的服务取决于手动启动的服务,则手动启动的服务也会在系统启动时自动启动。 所以你不应该需要一个Thread.Sleep。您也可以看看下面的文章,了解如何将其他服务依赖关系分配给Windows服务:http://www.c-sharpcorner.com/UploadFile/0f68f2/adding-service-dependency-on-a-windows-service-through-regis/

+0

谢谢,但它已被设置为自动。问题是它并不总是自动启动。 “...当Windows重新启动时,它不会总是自动启动...” –

相关问题