title: Dude, where's my thread?? (or: rename a .NET thread pool thread - is it possible?)
body: <p>Sometimes I find myself stepping through an application in Debug mode, until I hit 'step' on some particular line and it takes way too much time doing something, eating up 100% CPU. At this point, I hit the 'Break' button and try to find what's running that's taking so long. </p>
  
  <p>The problem is, this app has a hefty amount of threads running, and at the time I hit 'Break', the execution point goes to the GUI thread that's probably just doing a 'Wait'. 
  I then have to hunt through the existing threads (I counted them - this time they're 37!) trying to find the one I was executing on. I'd have to look at the stack of every one of them until I find the one I was looking for.</p>
  
  <p>The thread I'm running on is an async invoke, so it runs on a thread pool thread.
  I'd like to give this thread a descriptive name and reset its name at the end of the operation.</p>
  
  <p>The problem is, property <code>Thread.Name</code> can only be set <em>once</em>, afterwards it gives an <code>InvalidOperationException</code>.</p>
  
  <p>Any suggestions?</p>
  
  <p>Oh yeah, I'm running VS2005/.NET 2.0 but I'm also curious if newer versions have better ways to handle this.</p>