title: What exactly happens when you call an async method without the await keyword?
body: <p>I have a web server and there is a periodic job merges and send records (lots of request logs). </p>
  
  <pre><code>Task.Run(() =&gt;
  {
      while (true)
      {
          try
          {
              MergeAndPutRecords();
          }
          catch (Exception ex)
          {
              Logger.Error(ex);
          }
      }
  });
  </code></pre>
  
  <p>In <code>MergeAndPutRecords</code> function, there are code merging records and async function returns Task sending records. (Actaully it is Amazon Kinesis Firehose's <a href="http://docs.aws.amazon.com/sdkfornet/v3/apidocs/items/KinesisFirehose/MKinesisFirehosePutRecordBatchAsyncPutRecordBatchRequestCancellationToken.html" rel="noreferrer">PutRecordBatchAsync</a>.)</p>
  
  <p>Then what happens if i call that function without await keyword? Does function runs on seperated thread? <a href="https://stackoverflow.com/questions/27265818/does-the-use-of-async-await-create-a-new-thread">Here says it is not</a>. Then what is returning Task Means? <a href="https://stackoverflow.com/questions/46053175/c-sharp-async-await-with-without-awaiting-fire-and-forget">Here</a> says async method without await keyword means </p>
  
  <blockquote>
    <ol>
    <li>Starts the asynchronous method on the current thread. Ignores all results (including exceptions).</li>
    </ol>
  </blockquote>
  
  <p>Then my periodic job and PutRecordBatchAsync are processed concurrently? I know asynchronouse and concurrent is different. But there is no await keyword and they are in same thread. Which one would be executed first? I'm confusing...</p>
  
  <p>There would be massive records that needs to be merge and sent in real-time. So I think it must be executed concurrently..</p>