3

15 分ごとに自動電子メールを送信する Windows サービスを開発しています。タイマーを使用して、一定の時間間隔 (15 分) 後にサービスを再度使用していますが、機能していません。

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

最初はメールが送信されますが、15分ごとにメール送信を行いたいです。

4

1 に答える 1

2

このようにコードを変更する必要があります

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() {  }
  }
}
于 2012-12-06T13:22:24.553 に答える