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

我已经部署了我的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秒钟。 如果我的服务需要更长时间,我该怎么办?

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

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

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

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

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

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

但是,我同意许多其他人的意见,我会看两个可能的选择。

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

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

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

问候