title: How to start method on timer from windows service?
body: <p>I have a method that executes in about 10 minutes. And it goes well just by itself. I need to start this method every hour using windows service (this is obligatory). So I've written my service by some examples (just one invoke for start):</p>
  
  <pre><code>partial class ServiceWSDRun : ServiceBase
  {
      protected override void OnStart(string[] args)
      {
          Thread t = new Thread(WebServiceDownload.MainProgram.Execute);
          t.Start();
      }
  }
  </code></pre>
  
  <p>Now when I install it, it launches my method in a new thread but this thread seem to end with the OnStart() - it actually logs some info from the beginning of me method. Why does it stop and what should I do?</p>
  
  <p>And I'm thinking in the end I should have something like this:</p>
  
  <pre><code>partial class ServiceWSDRun : ServiceBase
  {
      System.Timers.Timer timer = null;
  
      protected override void OnStart(string[] args)
      {
          Thread t = new Thread(WebServiceDownload.MainProgram.Execute);
          t.Start();
  
          timer = new System.Timers.Timer();
          timer.Interval = 60 * 60 * 1000; // 1 hour
          timer.Elapsed += new System.Timers.ElapsedEventHandler(OnTimer);
          timer.Enabled = true;
      }
  
      public void OnTimer(object sender, System.Timers.ElapsedEventArgs args)
      {
          WebServiceDownload.MainProgram.Execute();
      }
  
      protected override void OnStop()
      {
          timer.Enabled = false;
      }
  }
  </code></pre>
  
  <p>How do I make it work? And keep in mind that method takes ~10 mins to execute.</p>