我已经部署了我的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秒钟。如果我的服务需要更长时间,我该怎么办?
答案 0 :(得分:15)
在您的服务类中,在OnStart / OnStop方法中使用ServiceBase.RequestAdditionalTime()
:
// request an additional 4 seconds to complete the operation
RequestAdditionalTime(4000);
答案 1 :(得分:13)
创建服务的正常方法是让启动代码创建一个新线程,并在该线程中运行您的服务。
服务启动应该几乎是即时的 - 只不过是用你的“真实”工作产生一个新线程。
如果您花了超过三秒钟,这表明您正在主线程中进行实际工作,而不是为您的服务创建单独的工作。
答案 2 :(得分:2)
关于具体问题,确切的超时有所不同,但不到30秒。您可以通过注册表项控制服务的默认启动超时,您可以看到如何执行此操作here。
但是,我会同意许多其他人的观点,我会考虑两种可能的选择。
答案 3 :(得分:1)
此外,如果您在不同的物理环境中测试过该服务,那么问题似乎不是正常的启动时间,而是PC的性能。您可以增加特定PC的注册表项的超时。
请参阅: http://support.microsoft.com/kb/839803
此致