title: Windows service timer multithread
body: <p>I am building a Windows Service that will audit users based on a schedule in a database.  The service checks the database for scheduled audits every ten minutes.  Once and audit is started, it marks a start time in the database table so it will not start again if it takes longer than ten minutes.</p>
  
  <p>My question is, is the following code acceptable for what I am doing and should I use multithreading every time 10 minutes is elapsed and if so, how would I accomplish this?</p>
  
  <p>My sample code:</p>
  
  <pre><code>protected override void OnStart(string[] args)
  {
      var aTimer = new Timer(600000);
      aTimer.Elapsed += ATimerElapsed;
      aTimer.Interval = 600000;
      aTimer.Enabled = true;
      GC.KeepAlive(aTimer);
  }
  
  private static void ATimerElapsed(object sender, ElapsedEventArgs e)
  {
      try
      {
           Worker.ProcessScheduledAudits();
      }
      catch (Exception ex)
      {
           EventLog.WriteEntry("Application", ex.Message, EventLogEntryType.Error);
      }                
  }
  </code></pre>