2012-07-17 40 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