简体   繁体   中英

Restarting a windows service after a fixed time interval

I am developing a windows service that sends automated e-mail in every 15 minutes. I am using a timer to use the service again after a fixed time interval (15 minutes) but its not working.

namespace Mailer
{
  public partial class Mailer : ServiceBase
  {
    System.Timers.Timer createOrderTimer;
    public Mailer()
    {
      InitializeComponent();
    }

    protected override void OnStart(string[] args)
    {
      sendmail();  //function to send email.

      createOrderTimer = new System.Timers.Timer();                      
      createOrderTimer.Elapsed += new  System.Timers.ElapsedEventHandler(createOrderTimer_Elapsed);
      createOrderTimer.Interval = 15000;
      createOrderTimer.Enabled = true;
      createOrderTimer.AutoReset = true;                      
      createOrderTimer.Start();
    }

    protected void createOrderTimer_Elapsed(object sender, System.Timers.ElapsedEventArgs args)
    {
      createOrderTimer.Stop();
      ServiceController controller = new ServiceController("Mailer");
      controller.Start();
    }

    protected void sendmail
    {
      //code to send email.
    }

    protected override void OnStop() {  }
  }
}

Initially the email is sent but I want the email sending to be performed in every 15 minutes.

You need to change the code like this

namespace Mailer
{
  public partial class Mailer : ServiceBase
  {
    System.Timers.Timer createOrderTimer;
    public Mailer()
    {
      InitializeComponent();
    }

    protected override void OnStart(string[] args)
    {
      createOrderTimer = new System.Timers.Timer();                      
      createOrderTimer.Elapsed += new  System.Timers.ElapsedEventHandler(sendmail);
      createOrderTimer.Interval = 900000; // 15 min
      createOrderTimer.Enabled = true;
      createOrderTimer.AutoReset = true;                      
      createOrderTimer.Start();
    }

    protected void sendmail(object sender, System.Timers.ElapsedEventArgs args)
    {
      //code to send email.
    }

    protected override void OnStop() {  }
  }
}

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM