title: Is using Task.Run a bad practice?
body: <p>Generally, when implementing an asynchronous method on a class, I write something like this:</p>
  
  <pre><code>public Task&lt;Guid&gt; GetMyObjectIdAsync(string objectName)
  {
      return Task.Run(() =&gt; GetMyObjectId(objectName));
  }
  
  private Guid GetMyObjectId(string objectName)
  {
      using (var unitOfWork = _myUnitOfWorkFactory.CreateUnitOfWork())
      {
          var myObject = unitOfWork.MyObjects.Single(o =&gt; o.Name == objectName);
          return myObject.Id;
      }
  }
  </code></pre>
  
  <p>This sort of pattern allows me to use the same logic synchronously and asynchronously, depending on the situation (most of my work is in an old code base, not a lot supports async calls yet), as I could expose the synchronous method publicly and get maximum compatibility if I need to.</p>
  
  <p>Recently I've read several SO posts that suggest using <code>Task.Run()</code> is a bad idea, and should only be used under certain circumstances, but those circumstances did not seem very clear.</p>
  
  <p>Is the pattern I've depicted above actually a bad idea?  Am I losing some of the functionality/ intended purpose of async calls doing it this way?  Or is this a legit implementation?</p>