title: _ = Task.Run vs async void | Task.Run vs Async Sub
body: <p><em>In a console application. I need to load some long running code (network-stuff, REST calls) off my main thread. I want to pass it to a background thread and don't block the calling thread. I will invoke events in that method to handle it's result.</em></p>
  
  <p>Is there any difference beetween doing this,</p>
  
  <pre class="lang-cs prettyprint-override"><code>private async Task DoSomethingAsync() {
      // Doing long running stuff
  }
  public async Task MainThreadAsync() {
      _ = Task.Run(async () =&gt; await DoSomethingAsnyc());
      // Continue with other stuff and don't care about DoSomethingAsync()
  }
  </code></pre>
  
  <p>and doing this?</p>
  
  <pre class="lang-cs prettyprint-override"><code>private async void DoSomethingAsync() {
      // Doing long running stuff
  }
  public async Task MainThreadAsync() {
      DoSomethingAsync();
      // Continue with other stuff and don't care about DoSomethingAsync()
  }
  </code></pre>
  
  <hr>
  
  <p>VB.Net:</p>
  
  <pre class="lang-vb prettyprint-override"><code>Private Async Function DoSomethingAsync() As Task
      ' Doing long running stuff
  End Function
  
  Public Async Function MainThreadAsync() As Task 
      Task.Run(Async Function() As Task
                   Await DoSomethingAsync()
               End Function)
      ' Continue with other stuff and don't care about DoSomethingAsync()
  End Function
  </code></pre>
  
  <p>vs</p>
  
  <pre class="lang-vb prettyprint-override"><code>Private Async Sub DoSomethingAsync()
      ' Doing long running stuff
  End Sub
  
  Public Async Function MainThreadAsync() As Task 
      DoSomethingAsync()
      ' Continue with other stuff and don't care about DoSomethingAsync()
  }
  </code></pre>
  
  <p>Or is there even a better way?
  Also, is there a difference beetween c# and vb.net in this regard?</p>