1

我想知道如何强制我的窗口服务重新启动或停止,如果它已经运行了大约 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();
}

请帮忙。谢谢

4

1 回答 1

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()
    { 

    }
于 2013-08-12T04:14:23.137 回答