title: Async/await, ThreadPool and SetApartmentState
body: <p>I'd like to use <code>await Task.Run(DoWork)</code>, to do some repetitive single-threaded computational work on ThreadPool. The problem is, I need to use STA COM objects inside <code>DoWork</code>, so I guess I cannot use ThreadPool because I cannot alter the apartment state of a pool thread. </p>
  
  <p>How can I still use <code>async</code>/<code>await</code> in this scenario? Creating my own pool of STA threads with a custom task scheduler sounds like an excessive work.</p>