2017-05-03 47 views
0

我有一個在大約10分鐘內執行的方法。它本身就很好。我需要使用Windows服務每小時啓動一次這種方法(這是強制性的)。所以我通過一些例子(只是一個援引開始)寫我的服務:如何從Windows服務啓動計時器的方法?

partial class ServiceWSDRun : ServiceBase 
{ 
    protected override void OnStart(string[] args) 
    { 
     Thread t = new Thread(WebServiceDownload.MainProgram.Execute); 
     t.Start(); 
    } 
} 

現在,當我安裝它,它推出我的方法在一個新的線程,但這個線程似乎與的OnStart結束() - 它實際上記錄了我方法開始時的一些信息。它爲什麼會停止,我應該怎麼做?

而且我想我到底應該有這樣的事情:

partial class ServiceWSDRun : ServiceBase 
{ 
    System.Timers.Timer timer = null; 

    protected override void OnStart(string[] args) 
    { 
     Thread t = new Thread(WebServiceDownload.MainProgram.Execute); 
     t.Start(); 

     timer = new System.Timers.Timer(); 
     timer.Interval = 60 * 60 * 1000; // 1 hour 
     timer.Elapsed += new System.Timers.ElapsedEventHandler(OnTimer); 
     timer.Enabled = true; 
    } 

    public void OnTimer(object sender, System.Timers.ElapsedEventArgs args) 
    { 
     WebServiceDownload.MainProgram.Execute(); 
    } 

    protected override void OnStop() 
    { 
     timer.Enabled = false; 
    } 
} 

我如何工作的呢?請記住,該方法需要約10分鐘才能執行。

回答