CLR如何在线程池线程中运行beginXXX?

时间:2012-07-17 01:02:57

标签: c#

我试图弄清楚CLR如何将异步操作BeginXXX放入线程池的队列中。 以及调用哪个ThreadPool的API。 但是当我在System.IO.Stream中歪曲了BeginRead()时,我没有找到任何东西 和反射器6的System.Data.Sqlclient.SqlCommand中的BeginExecuteReader()。

1 个答案:

答案 0 :(得分:0)

许多异步操作使用已打开的OS句柄,用于I / O完成端口,重叠操作或包含在托管WaitHandle中的其他OS同步对象。

在这些情况下,可能是类使用ThreadPool.BindHandleThreadPool.RegisterWaitForSingleObject而不是ThreadPool.QueueUserWorkItem来调度在线程池上发生完成回调的异步操作线程。