title: When using .Net asynchronous sockets, which thread are callbacks called from?
body: <p>When you use asynchronous methods like <code>Socket.BeginConnect</code> and <code>Socket.BeginReceive</code> you pass an <code>AsyncCallback</code> delegate. </p>
  
  <p>When these delegates are called, are they called from one of the internal thread-pool threads, or a temporary thread? 
  I was thinking for instance in the case you are running a <em>server</em>, if you start doing logic in your callback implementation and don't return, will you exhaust the threadpool after a few connections are accepted since you are 'stealing' the thread?</p>