2013-09-23 2 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

Смежные вопросы