title: Why *not* change the priority of a ThreadPool (or Task) thread?
body: <p>There are many places across the web and Stack Overflow where one is discouraged from changing the priority of a <strong>ThreadPool</strong> thread or TPL <strong>Task</strong>. In particular:</p>
  
  <p><A href="http://msdn.microsoft.com/en-us/library/ff647332.aspx" rel="noreferrer">&quot;You have no control over the state and priority of a thread pool thread.&quot;<br/>
  &quot;The runtime manages the thread pool. You have no control over the scheduling of the thread, nor can you change the thread's priority.&quot;</a></p>
  
  <p><A href="http://stackoverflow.com/questions/1467194/does-changing-the-culture-of-a-threadpool-thread-affect-it-when-it-gets-returned">
  "You should not change the Culture or Priority or... of a PoolThread. Just like you don't paint or re-decorate a rental car."</a></p>
  
  <p><A href="http://msdn.microsoft.com/en-us/library/0ka9477y.aspx" rel="noreferrer">
  "There are several scenarios in which it is appropriate to create and manage your own threads instead of using thread pool threads: (such as...) You require a thread to have a particular priority."</a></p>
  
  <p><A href="http://groups.google.com/group/microsoft.public.dotnet.general/browse_thread/thread/a19ccff5b99411c7/d7c6d0bedfa1f331" rel="noreferrer">
  "Each thread in ThreadPool runs at the default priority and the code to change the ThreadPriority has no effect."</a></p>
  
  <p>However, it is a simple matter to do so, and the debugger shows that the change <em>does</em> seem to stick (insofar as the value can be read back).</p>
  
  <pre><code>Thread.CurrentThread.Priority = ThreadPriority.AboveNormal;
  </code></pre>
  
  <p>So the question is, what is the specific <strong>reason</strong> for this particular taboo?</p>
  
  <p>My suspicion: doing so disturbs the delicate load balancing-assumptions of the pool. But this doesn't explain why some sources say that you <strong>can't</strong> change it.</p>