ExecuteRegisteredAsyncTasks是否释放请求处理线程以服务其他请求?

我注意到从ExecuteRegisteredAsyncTasks调用返回后的代码在与此调用之前的代码相同的线程中执行。 所以我理解手动调用ExecuteRegisteredAsyncTasks并不会释放请求处理线程来为其他请求提供服务,这种方法应该只是自动调用才能获得扩展优势?

在msdn上是示例代码,但帮助不回答这个问题。

UPDATE

就我而言,在PageAsyncTasks我异步调用Web服务(使用Begin *和End *),所以我没有使用线程池。

RegisterAsyncTask方法的MSDN示例中,它们只是声明一个使用Begin和End方法调用的AsyncTaskDelegate 。 当您异步调用委托时,它使用线程池中的线程,因此在这种情况下您基本上没有任何改进。 唯一的速度提升可能是您并行执行多个操作,否则这些操作将同步执行。

如果要获得真正的性能提升,则需要使用IOCP(I / O完成端口)。 它们适用于I / O密集型任务,例如网络调用(数据库调用,Web服务调用……)。 不适合CPU密集型任务。 因此,假设您要使用WebClient.DownloadStringAsync方法执行HTTP调用。 此方法不使用线程池中的线程。 它向内核注册IOCP并触发HTTP请求。 当它向调用者返回控制时,在整个HTTP请求持续时间内没有消耗线程。 请求完成后,将发出IOCP信号,并从线程池中抽取一个线程来处理结果。

看一下ASP.NET文章中的异步页面 。 IOCP在那里得到了更好的解释。