2011-04-06 100 views
2

我已經創建了Window Service VS2010,現在我想安排那個服務在每個2Hour之後運行。對於這是什麼代碼..安排一個windows服務每兩小時運行一次

+3

對不起,我不明白 - 你有一個Windows服務或Web服務?你需要在你的Windows服務中設置一個計時器,還是你需要一些機制來調用Web服務調用? – Rup 2011-04-06 11:47:40

+1

我需要在您的Windows服務中設置一個計時器 – Shivi 2011-04-06 11:59:04

+0

@cHao:Yup,使用OS *提供的功能應該*爲默認設置。唉,老版本的TS很煩人,有些古怪(在cca XP SP1,IIRC之前),所以人們仍然禁用TS,即使它不再是一個好主意。所以Windows的代碼不能可靠地在TS上實際工作:( – Piskvor 2011-04-07 13:46:14

回答

2

您可以在ThreadPool類中使用RegisterWaitForSingleObject方法。

您的服務代碼應該是這個樣子(從herehere大量被盜):

private ManualResetEvent resetEvent = new ManualResetEvent(false); 
private RegisteredWaitHandle handle; 

public void OnStart() 
{ 
    resetEvent.Reset(); 
    handle = ThreadPool.RegisterWaitForSingleObject(resetEvent, callBack, null, 7200000, false); 
} 

public void OnStop() 
{ 
    reset.Set(); 
} 

private void callBack(object state, bool timeout) 
{ 
    if (timeout) 
    { 
     //Do Stuff Here 
    } 
    else 
    { 
     handle.Unregister(null); 
    } 
} 
0

在調試或發佈文件夾中,您將有一個.exe版本的文件。

使用任務計劃程序隨時運行它。

在Windows XP和Server 2003中,你可以從開始菜單,點擊此設置,然後控制面板訪問此的調度任務

上面會不斷地利用資源。間歇使用PS服務可以完成這項工作: http://technet.microsoft.com/en-us/sysinternals/bb897542.aspx

相關問題