title: C# How to start an async method without await its complete?
body: <p>Sometimes I need to start an async job which works very slow. I don't care if that job success and I need to continue working on my current thread.</p>
  
  <p>Like sometimes I need to send an Email or SMS which works very slow. I need to respond to the web client as soon as possible so I don't want to <code>await</code> it.</p>
  
  <p>I have googled this question and some articles suggest me to write like this:</p>
  
  <pre><code>// This method has to be async
  public async Task&lt;Response&gt; SomeHTTPAction()
  {
      // Some logic...
      // ...
  
      // Send an Email but don't care if it successfully sent.
      Task.Run(() =&gt;  _emailService.SendEmailAsync());
      return MyRespond();
  }
  </code></pre>
  
  <p>Or like this:</p>
  
  <pre><code>// This method has to be async
  public async Task&lt;Response&gt; SomeHTTPAction()
  {
      // Some logic...
      // ...
  
      // Send an Email but don't care if it successfully sent.
      Task.Factory.StartNew(() =&gt;  _emailService.SendEmailAsync());
      return MyRespond();
  }
  </code></pre>
  
  <p>There will be a warning says: <code>before the call is completed. Consider applying the 'await' operator to the result of the call.</code></p>
  
  <p>So what if I really <code>await</code>ed it? What is the best practice in C# to 'fire and forget', just call an async method without waiting for its complete? </p>