Async/Await action within Task.Run()
<p><code>Task.Run(()=&gt;{})</code> puts the action delegate into the queue and returns the task .
Is there any benefit of having async/await within the <code>Task.Run()</code>?
I understand that <code>Task.Run()</code> is required since if we want to use await directly, then the calling method will need to be made Async and will affect the calling places.</p>
<p>Here is the sample code which has async await within <code>Task.Run()</code>. The full sample is provided here: <a href="https://docs.microsoft.com/en-us/dotnet/standard/parallel-programming/how-to-create-pre-computed-tasks" rel="noreferrer">Create pre-computed tasks</a>.</p>
<pre><code>Task.Run(async () =&gt; { await new WebClient().DownloadStringTaskAsync(&quot;&quot;);});
</code></pre>
<p>Alternatively this could have been done:</p>
<pre><code>Task.Run(() =&gt; new WebClient().DownloadStringTaskAsync(&quot;&quot;).Result;);
</code></pre>
<p>Since both, <code>Task.Run()</code> and Await will queue the work and will be picked by the thread pool, could the async/await within the <code>Task.Run()</code> be a bit redundant?</p>