title: What is the best method for creating a static class that uses threads?
body: <p>Let's say I am designing a simple logging class (yes - I <strong>know</strong> there are those already out there in the wild!) and I want the class to be static so the rest of my code can call it without having to instantiate it first.  Maybe something like this:</p>
  
  <pre><code>internal static class Log
  {
      private static string _logFile = "";
  
      internal static void InitializeLogFile(string path)
      {
          ...
      }
      internal static void WriteHeader()
      {
          ...
      }
      internal static void WriteLine(params string[] items)
      {
          ...
      }
  }
  </code></pre>
  
  <p>Now, I want the internals to spin up their own thread and execute in an Asynch manner, possibly using BackgroundWorker to help simplify things.  Should I just create a new BackgroundWorker in each method, create a static BackgroundWorker as a private property of the static class, or is there something I am overlooking altogether?</p>