Does ThreadPool.RegisterWaitForSingleObject block the current thread or a thread-pool thread?
<p>From reading <a href="https://msdn.microsoft.com/en-us/library/02x3daw5%28v=vs.110%29.aspx" rel="noreferrer">the documentation of the <code>ThreadPool.RegisterWaitForSingleObject</code></a> method, it is not clear whether:</p>

<ol>
<li><p>It blocks the current thread while waiting on the <code>EventWaitHandle</code> and then commissions the <code>WaitOrTimerCallback</code> on a thread pool thread, or</p></li>
<li><p>It commissions a thread pool thread to wait on the wait handle and then on that same thread execute the <code>WaitOrTimerCallback</code> once the wait handle has been signaled.</p></li>
<li><p>It blocks the current thread and when the wait handle is signaled, it calls the <code>WaitOrTimerCallback</code> on the current thread. But this would be the equivalent functionality of <code>WaitHandle.WaitOne()</code>. Also, it would not involve the thread pool at all.</p></li>
</ol>

<p>Which of the three does it do?</p>