2014-02-25 71 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 
     { 
      // ... 
     } 

    } 
相關問題