title: When is the best place to use Task.Result instead of awaiting Task
body: <p>Whilst I've been using async code in .NET for a while, I've only recently started to research it and understand what's going on.  I've just been going through my code and trying to alter it so if a task can be done in parallel to some work, then it is. So for example:</p>
  
  <pre><code>var user = await _userRepo.GetByUsername(User.Identity.Name);
  
  //Some minor work that doesn't rely on the user object
  
  user = await _userRepo.UpdateLastAccessed(user, DateTime.Now);
  
  return user;
  </code></pre>
  
  <p>Now becomes: </p>
  
  <pre><code>var userTask = _userRepo.GetByUsername(User.Identity.Name);
  
  //Some work that doesn't rely on the user object
  
  user = await _userRepo.UpdateLastAccessed(userTask.Result, DateTime.Now);
  
  return user;
  </code></pre>
  
  <p>My understand is that the user object is now being fetched from the database WHILST some unrelated work is going on. However, things I've seen posted imply that result should be used rarely and await is preferred but I don't understand why I'd want to wait for my user object to be fetched if I can be performing some other independant logic at the same time?</p>