title: Is it possible to remove ExecutionContext and Thread allocations when using SocketAsyncEventArgs?
body: <p>If you profile a simple client application that uses <code>SocketAsyncEventArgs</code>, you will notice <code>Thread</code> and <code>ExecutionContext</code> allocations.</p>
  
  <p>The source of the allocations is <code>SocketAsyncEventArgs.StartOperationCommon</code> that creates a copy of the ExecutionContext with <code>ExecutionContext.CreateCopy()</code>.</p>
  
  <p><code>ExecutionContext.SuppressFlow</code> seems like a good way to suppress this allocation. However this method itself will generate allocations when ran in a new thread.</p>
  
  <p>How can I avoid these allocations?</p>