强制窗口服务停止/重新启动,如果它运行约30分钟

时间:2013-08-12 03:46:21

标签: c# windows-services

我想知道如果我的窗口服务已经运行了大约30分钟,我可以强制重启或停止。

就像:

if(service.runs == 30 mins){
     service.stop() 
       or
     service.restart()
}
顺便说一下,我正在使用C#。我在这里使用一个线程。 这就是我的OnStart的样子:

Thread myThread;

protected override void OnStart(string[] args){
     myThread = new Thread(new ThreadStart(this.myThreadFunction));

     myThreadFunction.Start();
}

请帮忙。 感谢

1 个答案:

答案 0 :(得分:1)

您需要在服务启动时运行计时器。并将其经过的事件设置为30分钟。如果已经过了,那么您可以应用上面的停止检查。当服务停止/重新启动时,您还需要重置计时器。

     //somewhere in your class 
     System.Timer.Timer tmr  = new System.Timers.Timer();

     //on construct or start event         
     tmr.Interval  = 1800000; //30 minutes = 60*1000*30
     tmr.Elapsed -= new ElapsedEventHandler(OnTimedEvent);
     tmr.Elapsed += new ElapsedEventHandler(OnTimedEvent);
     tmr.Start();


     private static void OnTimedEvent(object source, ElapsedEventArgs e)
    {
            tmr.Stop();
          ServiceController service = new ServiceController(yourserviceName);
          service.Stop();
         // service.Start() uncomment this line if your want to restart
     }

      protected override void OnStop()
    { 

    }