启动Windows服务的超时是多少?

时间:2009-07-21 16:32:42

标签: c# .net windows-services timeout

我已经部署了我的Windows服务(使用独立的安装程序类和SC.EXE),但是当我尝试启动它时出现错误:

---------------------------
Services
---------------------------
Could not start the MyName service on Local Computer.



Error 1053: The service did not respond to the start or control request in a timely fashion.

什么是超时?感觉就像大约3秒钟。如果我的服务需要更长时间,我该怎么办?

4 个答案:

答案 0 :(得分:15)

在您的服务类中,在OnStart / OnStop方法中使用ServiceBase.RequestAdditionalTime()

// request an additional 4 seconds to complete the operation
RequestAdditionalTime(4000);  

答案 1 :(得分:13)

创建服务的正常方法是让启动代码创建一个新线程,并在该线程中运行您的服务。

服务启动应该几乎是即时的 - 只不过是用你的“真实”工作产生一个新线程。

如果您花了超过三秒钟,这表明您正在主线程中进行实际工作,而不是为您的服务创建单独的工作。

答案 2 :(得分:2)

关于具体问题,确切的超时有所不同,但不到30秒。您可以通过注册表项控制服务的默认启动超时,您可以看到如何执行此操作here

但是,我会同意许多其他人的观点,我会考虑两种可能的选择。

  1. 尽快启动服务,生成线程等。
  2. 如果您不能使用选项1,则可以使用RequestAdditionalTime()。请务必尽早打电话。

答案 3 :(得分:1)

此外,如果您在不同的物理环境中测试过该服务,那么问题似乎不是正常的启动时间,而是PC的性能。您可以增加特定PC的注册表项的超时。

请参阅: http://support.microsoft.com/kb/839803

此致