title: How should Task.Run call an async method in VB.NET?
body: <p>Given an asynchronous method that does both CPU and IO work such as:</p>
  
  <pre><code>Public Async Function RunAsync() As Task
      DoWork()
      Await networkStream.WriteAsync(buffer, 0, buffer.Length).ConfigureAwait(False)
  End Function
  </code></pre>
  
  <h3>Which of the following options is the best way to call that asynchronous method from Task.Run in Visual Basic and why?</h3>
  
  <p>Which is the VB equivalent for C# <code>Task.Run(() =&gt; RunAsync())</code>?</p>
  
  <pre><code>Await Task.Run(Function() RunAsync())
  ' or
  Await Task.Run(Sub() RunAsync())
  </code></pre>
  
  <p>Are the Async/Await keywords within Task.Run necessary or redundant? <a href="https://stackoverflow.com/questions/18013523/when-correctly-use-task-run-and-when-just-async-await#comment55192388_18015586">This comment</a> claims they're redundant, but <a href="https://stackoverflow.com/a/25768320/14934">this answer</a> suggests it might be necessary in certain cases:</p>
  
  <pre><code>Await Task.Run(Async Function()
                     Await RunAsync()
                 End Function)
  </code></pre>
  
  <p>Is ConfigureAwait useful within Task.Run?</p>
  
  <pre><code>Await Task.Run(Function() RunAsync().ConfigureAwait(False))
  
  Await Task.Run(Async Function()
                     Await RunAsync().ConfigureAwait(False)
                 End Function)
  </code></pre>
  
  <p>Which of the above 5 Task.Run options is best practice?</p>
  
  <p>Note: There's a similar question <a href="https://stackoverflow.com/q/39071826/14934">How to call Async Method within Task.Run?</a> but it's for C#, the selected answer has negative votes, and doesn't address ConfigureAwait.</p>