title: How to abort socket's BeginReceive()?
body: <p>Naturally, <code>BeginReceive()</code> will never end if there's no data.
  MSDN <a href="http://msdn.microsoft.com/en-us/library/dxkwh6zw.aspx" rel="nofollow noreferrer">suggests</a> that calling <code>Close()</code> would abort <code>BeginReceive()</code>.</p>
  <p>However, calling <code>Close()</code> on the socket also performs a <code>Dispose()</code> on it, as figured out in <a href="https://stackoverflow.com/questions/3601521/c-socket-close-should-i-still-call-dispose/3601548#3601548">this great answer</a>, and consequently <code>EndReceive()</code> would throw an exception because the object is already disposed (and it does!).</p>
  <p>How should I proceed?</p>