1

我试图弄清楚 CLR 如何将异步操作 BeginXXX 放入线程池的队列中。以及调用哪个 ThreadPool 的 API。但是,当我用 Reflector 6 探查 System.IO.Stream 中的 BeginRead()
和 System.Data.Sqlclient.SqlCommand 中的 BeginExecuteReader() 时,我什么也没找到。

4

1 回答 1

0

许多异步操作使用已打开用于 I/O 完成端口、重叠操作或包装在托管WaitHandle.

在这些情况下,可能是该类使用ThreadPool.BindHandle, 或者ThreadPool.RegisterWaitForSingleObject不是ThreadPool.QueueUserWorkItem为了安排在线程池线程上发生完成回调的异步操作。

于 2012-07-17T01:32:54.150 回答