C# CLR如何在线程池线程中运行beginXXX?
我试图弄清楚CLR是如何将异步操作BeginXXX放入线程池的队列的。 以及调用哪个线程池的API。 但是我在System.IO.Stream中搜索BeginRead()时没有发现任何东西C# CLR如何在线程池线程中运行beginXXX?,c#,C#,我试图弄清楚CLR是如何将异步操作BeginXXX放入线程池的队列的。 以及调用哪个线程池的API。 但是我在System.IO.Stream中搜索BeginRead()时没有发现任何东西 和System.Data.Sqlclient.SqlCommand中的BeginExecuteReader(),由Reflector 6执行。许多异步操作使用已打开的操作系统句柄,用于I/O完成端口、重叠操作或包装在托管WaitHandle中的其他操作系统同步对象 在这些情况下,可能是类使用ThreadPoo
和System.Data.Sqlclient.SqlCommand中的BeginExecuteReader(),由Reflector 6执行。许多异步操作使用已打开的操作系统句柄,用于I/O完成端口、重叠操作或包装在托管
WaitHandle
中的其他操作系统同步对象
在这些情况下,可能是类使用ThreadPool.BindHandle
或ThreadPool.RegisterWaitForSingleObject
而不是ThreadPool.QueueUserWorkItem
,以计划在线程池线程上发生完成回调的异步操作