title: Windows Service Implementing IDisposable - Is it bad practice?
body: <p>I've come across this code:</p>
  
  <pre><code>public class ServiceLauncher2 : ServiceBase, IDisposable
  </code></pre>
  
  <p>And then this:</p>
  
  <pre><code>        /// &lt;summary&gt;
          /// Disposes the controllers
          /// &lt;/summary&gt;
          // This is declared new as opposed to override because the base class has to be able to
          // call its own Dispose(bool) method and not this one. We could just as easily name
          // this method something different, but keeping it Dispose is just as valid. 
          public new void Dispose()
          {
              foreach (var mgr in _threadManagers)
                  mgr.Dispose();
              base.Dispose();
          }
  </code></pre>
  
  <p>I've never seen this in a Windows Service implementation before.  Usually just OnStop/OnStart is overridden.  Is this bad practice?</p>