2013-09-23 84 views
-1

我創建了一個windows服務,它將根據某些條件向用戶發送郵件。 我在自動模式下將它安裝在服務器上。從日誌中我可以看到它第一次成功運行並結束。第一次成功運行後,Windows服務未啓動

然後我沒有看到它在日誌中再次運行。

我檢查了管理工具中的服務,它說它已啓動。

我也重新啓動服務但沒有用,它沒有再次啓動。

下面是我用來啓動服務的代碼。

public partial class ScheduledService : ServiceBase 
{ 
    Timer timer; 
    private DateTime lastRun = DateTime.Now; 
    private DateTime DailyRunTime = Convert.ToDateTime(System.Configuration.ConfigurationManager.AppSettings["DailyRunTime"]); 
    public ScheduledService() 
    { 
     InitializeComponent(); 
     //GetDocRetentionList DocList = new GetDocRetentionList(); 
     //DocList.GetDataSet(); 
    } 

    protected override void OnStart(string[] args) 
    { 
     //System.Diagnostics.Debugger.Launch(); 
     TraceService("start service"); 
     //timer = new Timer(24 * 60 * 60 * 1000); 
     timer = new Timer(10 * 60 * 1000); 
     timer.Start(); 
     timer.Elapsed += new ElapsedEventHandler(OnElapsedTime); 
     double TimerInterval = Convert.ToDouble(System.Configuration.ConfigurationManager.AppSettings["Timer"]); 
     timer.Interval = TimerInterval; 
     timer.Enabled = true; 
    } 

    protected override void OnStop() 
    { 
     timer.Enabled = false; 
     TraceService("stopping service"); 
    } 

    private void OnElapsedTime(object source, ElapsedEventArgs e) 
    { 
     TraceService("Service started at " + DateTime.Now); 
     if (lastRun.Date < DateTime.Now.Date) 
     { 
      if (DateTime.Now > DailyRunTime) 
      { 
       GetDocRetentionList DocList = new GetDocRetentionList(); 
       DocList.GetDataSet(); 
       timer.Stop(); 
       lastRun = DateTime.Now.Date; 
       //timer.Start(); 
      } 
     } 

    } 

任何幫助,我可以在這方面得到的將是非常有益的。 Plz讓我知道。

回答

2

那麼..你的服務設置爲執行一次,然後關閉定時器在OnElapsedTime方法,但永遠不會重新打開。

OnElapsedTime應該做的第一件事是關閉定時器。它應該做的最後一件事是重新開啓。

+0

非常感謝克里斯。這應該解決我現在正在測試它的問題 – Kumar

相關問題