我试图弄清楚CLR如何将异步操作BeginXXX放入线程池的队列中。 以及调用哪个ThreadPool的API。 但是当我在System.IO.Stream中歪曲了BeginRead()时,我没有找到任何东西 和反射器6的System.Data.Sqlclient.SqlCommand中的BeginExecuteReader()。
答案 0 :(得分:0)
许多异步操作使用已打开的OS句柄,用于I / O完成端口,重叠操作或包含在托管WaitHandle
中的其他OS同步对象。
在这些情况下,可能是类使用ThreadPool.BindHandle
或ThreadPool.RegisterWaitForSingleObject
而不是ThreadPool.QueueUserWorkItem
来调度在线程池上发生完成回调的异步操作线程。