2012-07-17 41 views
1

我试图弄清楚CLR如何将异步操作BeginXXX放入线程池的队列中。 以及调用哪个ThreadPool的API。 但我没有发现任何东西,当我在System.IO.Stream
和BeginExecuteReader()在System.Data.Sqlclient.SqlCommand pokeed和身边的BeginRead()的反射器6CLR如何在线程池线程中运行beginXXX?

回答

0

许多异步操作使用有OS手柄已被打开以便与I/O完成端口,重叠操作或其他操作系统同步对象一起使用,这些对象被包装在托管的WaitHandle中。

在这些情况下,它可以是类以调度用于其上的线程池线程发生完成回调异步操作使用ThreadPool.BindHandle,或者ThreadPool.RegisterWaitForSingleObject代替ThreadPool.QueueUserWorkItem