title: NLog MappedDiagnosticsLogicalContext not working in async/await with ConfigureAwait(false)
body: <p>I am using NLog 4.3.5 and .Net framework 4.6.1</p>
  
  <p>When I begin a server side operation I call:</p>
  
  <pre><code>NLog.MappedDiagnosticsLogicalContext.Set("OperationId", Guid.NewGuid());
  </code></pre>
  
  <p>This gets mapped through and appears in my log files. All is good.... or is it?
  When reviewing my log files, I noticed that this operation id value doesn't seem to be working as I expected it to.</p>
  
  <p>Example:</p>
  
  <ol>
  <li><p>In thread 19 an operation begins and sets the context.</p></li>
  <li><p>It uses .ConfigureAwait(false) on all await calls</p></li>
  <li><p>It performs a </p>
  
  <pre><code>var tasks = items.Select(item =&gt; Task.Run( () =&gt; { /* do stuff */}
  await Task.WhenAll(tasks).ConfigureAwait(false)
  </code></pre></li>
  <li>One of the threads used for these tasks is thread 31 (keep that in mind for later)</li>
  <li>Meanwhile, in thread 36, a different server method is called and begins a new operation. Several log messages are written with it's unique operation id</li>
  <li>This operation performs 2 different await calls with ConfigureAwait(false)</li>
  <li>The next log statement occurs on thread 31. From then on, it logs the operation id that was created for the operation that began on thread 19!</li>
  </ol>
  
  <p>I did not expect this to happen and am unsure of how it happened. But, as I look through my log history, I see that this type of thing has happened before.</p>
  
  <p>I thought the logical call context was supposed to carry over. Is it my use of ConfigureAwait(false) that is causing this behavior? That is the only thing I can think of....</p>