.Net 1.1中的ServiceBase.RequestAdditionalTime()

时间:2011-11-23 13:21:35

标签: .net windows winapi service

重启.Net 1.1服务时,我需要延迟30秒超时。由于后勤原因,我无法升级到.Net 2.0以利用ServiceBase.RequestAdditionalTime()方法。

一种解决方法是在代码的开头调用SetServiceStatus。但是,出于依赖性目的,我需要在设置之前执行所有代码。

我还研究了设置注册表项ServicesPipeTimeout,但是我真的不想对所有服务进行全局更改,因为我不知道可能会产生什么影响。

是否有相当于在.Net 1.1中调用ServiceBase.RequestAdditionalTime()方法的内容?

1 个答案:

答案 0 :(得分:1)

如果你看一下.NET 2.0中ServiceBase.RequestAdditionalTime方法的源代码(使用像ILSpy这样的反编译器工具),你会发现它在概念上做了两件事:

  1. 将指定的毫秒数分配给SERVICE_STATUS结构的dwWaitHint字段
  2. 调用传递新SetServiceStatus结构的SERVICE_STATUS Win32函数
  3. 您可以使用P/Invoke在.NET 1.1中实现相同的功能,以便与Win32 API进行交互。