2014-02-25 64 views
0

我做了一个服务(WinServiceProject)许多天前,我想,这个自动启动,但具有延迟时间......我发现了一个解决方案,但这个不能帮我:http://support.microsoft.com/kb/193888/en-us如何推迟我在Windows Server 2003和Windows XP中创建的服务?

我修改,在HKEY_LOCAL_MACHINE \ SYSTEM注册表编辑\ CurrentControlSet \ Services \ WinServiceProject但这不起作用。

我添加多字符串值(DependOnService)并设置许多服务之前...这个工程,但不喜欢我想要的。

随着时间的推移,我需要它的解决方案,设定很多时间,并在这段时间后执行服务。如果我需要将代码添加到我的服务中,我会执行此操作。

谢谢。

+0

虽然不理想,可以考虑将延迟到您的服务代码,以防止它_n_秒运行。它需要位于主服务线程上,而不是调用OnStart()的线程,否则可能会显示服务未成功启动。 –

+0

Martin Parkin - 是的,我认为解决办法可能是在服务中添加一个代码,停止服务并设置“x”时间以重新开始......制作重新启动功能。 –

+0

@ManuelFdz,根据您的回复,我想知道您是否需要该服务继续每“x”分钟执行一些操作。那是对的吗? – AWinkle

回答

0

我解决了这个问题的代码!

公共静态无效RestartService(字符串服务名,诠释timeoutMilliseconds)

{ 

     ServiceController service = new ServiceController(serviceName); 

     try 
     { 
      int millisec1 = Environment.TickCount; 
      TimeSpan timeout = TimeSpan.FromMilliseconds(timeoutMilliseconds); 

      service.Stop(); 
      service.WaitForStatus(ServiceControllerStatus.Stopped, timeout); 

      // count the rest of the timeout 
      //int millisec2 = Environment.TickCount; 
      timeout = TimeSpan.FromMilliseconds(timeoutMilliseconds - millisec1); 

      service.Start(); 
      service.WaitForStatus(ServiceControllerStatus.Running, timeout); 
     } 

     catch 
     { 
      // ... 
     } 

    } 
相关问题