title: ThreadStateException when using QueueUserWorkItem in a Timer
body: <p>I have a ThreadStateException in my WinForms application.</p>
  
  <p>Step to reproduce:</p>
  
  <ul>
  <li>Create simple winforms app</li>
  <li>Add a Timer</li>
  <li><p>In click event, do :</p>
  
  <pre><code>timer1.Interval = 1000;
  timer1.Tick += timer1_Tick;
  timer1.Start();
  </code></pre>
  
  <p>with</p>
  
  <pre><code>void timer1_Tick(object sender, EventArgs e)
  {
      ThreadPool.QueueUserWorkItem(delegate
      {
          StringCollection paths =
              new StringCollection { @"c:\my.txt", @"c:\my.png" };
          Clipboard.SetFileDropList(paths);
      });
  }
  </code></pre></li>
  </ul>
  
  <p>The exception tells me:</p>
  
  <blockquote>
    <p>Current thread must be set to single thread apartment (STA) mode before OLE calls can be made. Ensure that your Main function has STAThreadAttribute marked on it.</p>
  </blockquote>
  
  <p>But the main has already the [STAThread] attribute.</p>
  
  <p>How to solve it?</p>