启动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,则可以使用RequestAdditionalTime()。 请务必尽早拨打此电话。
此外,如果您在不同的物理环境中测试了该服务,并且似乎问题不是正常的启动时间而是PC的性能。 您可以增加特定PC的注册表项的超时。
请参阅: http : //support.microsoft.com/kb/839803
问候