CLR が非同期操作 BeginXXX をスレッド プールのキューに入れる方法を理解しようとしています。そして、どの ThreadPool の API が呼び出されるか。
しかし、Reflector 6で System.IO.Stream の BeginRead() と System.Data.Sqlclient.SqlCommand の BeginExecuteReader() を調べても何も見つかりませんでした。
1 に答える
0
多くの非同期操作は、I/O 完了ポート、オーバーラップ操作、またはマネージにラップされた他の OS 同期オブジェクトで使用するために開かれた OS ハンドルを使用しますWaitHandle
。
このような場合、スレッド プール スレッドで完了コールバックが発生する非同期操作をスケジュールするために、クラスがThreadPool.BindHandle
,のThreadPool.RegisterWaitForSingleObject
代わりに を使用している可能性があります。ThreadPool.QueueUserWorkItem
于 2012-07-17T01:32:54.150 に答える