Windows服务启动超时

Mei*_*lon 52 windows-services timeout startup

有没有办法为每个服务的服务启动超时设置不同的值?我可以使用ServicesPipeTimeout注册表项更改它,但它是每台计算机(http://support.microsoft.com/kb/824344).

目前,我唯一想到的是在不同的线程中完成所有耗时的启动操作.

Hin*_*nek 79

我同意Romulo尽快开始服务.但是,如果您需要时间并且使用的是.NET Framework 2.0或更高版本,则可以考虑使用ServiceBase.RequestAdditionalTime()方法.

http://msdn.microsoft.com/en-us/library/system.serviceprocess.servicebase.requestadditionaltime.aspx

protected override void OnStart()
{
    this.RequestAdditionalTime(10000);
    // do your stuff
}
Run Code Online (Sandbox Code Playgroud)


Rôm*_*con 36

尽快完成服务的开始是一种很好的做法.所以,在开始状态期间,只做你绝对需要承认它成功开始的事情; 然后做其余的事.如果启动仍然是一个漫长的过程,请定期使用SetServiceStatus通知服务控制管理器您尚未完成,因此它不会使您的服务超时.

  • 请记住,如果还有另一项依赖于您自己的服务,那么一旦发布SERVICE_RUNNING,它可能会期望您的服务完全正常运行.这是在发布SERVICE_RUNNING之前完成_all_初始化的一个很好的理由,并且如果有必要,请使用SetServiceStatus请求更多时间. (12认同)