title: Task.Run vs ThreadPool.QueueUserWorkItem
body: <p>Not a subject expert I'm trying to understand more of the async world available in .NET. Task.Run and ThreadPool.QueueUserWorkItem both allow dispatching work on a pool thread but what are the differences or, if you prefer, pros and cons of the two?
  Following is my list of pros. Not sure if it is complete or even correct.</p>
  
  <p>ThreadPool.QueueUserWorkItem pros:</p>
  
  <ul>
  <li>Possibility of passing an argument</li>
  </ul>
  
  <p>Task.Run pros:</p>
  
  <ul>
  <li>Possibility of providing a CancellationToken</li>
  <li>Possibility of waiting Task completion</li>
  <li>Possibility of returning a value to calling code</li>
  </ul>