C# 如何在不同的线程池中处理异步回调?

C# 如何在不同的线程池中处理异步回调?,c#,.net,asynchronous,delegates,threadpool,C#,.net,Asynchronous,Delegates,Threadpool,当做一个开始。。。异步调用时,我传递的委托在默认线程池中处理(根据文档) 例如:System.IO.Stream.BeginRead( 字节[]缓冲区,整数偏移量,整数计数, 异步回调(对象状态) 如何使其能够使用专用线程池进行异步方法处理 (我知道这是可以做到的,因为CCR(并发协调运行时)也在做这件事(根据他们的文档))严格来说,它是在线程池的IO部分处理的(异步IO操作有自己的线程集,与ThreadPool.Queue*方法使用的线程集不同) 目前(使用已发布/支持的工具)执行此操作的唯一

当做一个开始。。。异步调用时,我传递的委托在默认线程池中处理(根据文档)

例如:System.IO.Stream.BeginRead( 字节[]缓冲区,整数偏移量,整数计数, 异步回调(对象状态)

如何使其能够使用专用线程池进行异步方法处理


(我知道这是可以做到的,因为CCR(并发协调运行时)也在做这件事(根据他们的文档))

严格来说,它是在线程池的IO部分处理的(异步IO操作有自己的线程集,与
ThreadPool.Queue*
方法使用的线程集不同)

目前(使用已发布/支持的工具)执行此操作的唯一方法是将存根方法传递到
BeginRead
,该方法将执行转发到您自己的线程池:

var async = stream.BeginRead(buffer, offset, count,
                            ayn => { MyThreadPool.Dispatch(() => {
                              // Handle completion
                            }}, null);

反应式框架扩展(RX)将使这变得更容易:为您的线程池创建一个
isScheduler
实现,但RX是一个CTP,可能需要一段时间才能启动任何形式的线程池。

因此,我正确地理解您:.Net线程池用于瞬间传递调用?是的。我认为这是无法避免的,因为异步IO使用IO线程池服务器上的.NET FX IO完成端口。