Строго говоря, он обрабатывается в части ввода-вывода пула потоков (асинхронные операции ввода-вывода имеют собственный набор потоков, отличный от тех, которые используются методами ThreadPool.Queue*
).
Единственный способ сделать это в настоящее время (с выпущенными / поддерживаемыми инструментами) - передать метод-заглушку в BeginRead
, который перенаправляет выполнение в ваш собственный пул потоков:
var async = stream.BeginRead(buffer, offset, count,
ayn => { MyThreadPool.Dispatch(() => {
// Handle completion
}}, null);
Расширения Reactive Framework (RX) облегчили бы эту задачу: создайте реализацию IScheduler
для вашего пула потоков, но RX является CTP и, скорее всего, пройдет некоторое время, прежде чем любая форма будет запущена.