根据我对阅读有关ASP.NET异步页面的理解,该异步任务开始时执行的方法始终在预渲染和预渲染完成事件之间执行.因为页面的控件’事件在页面的加载和预渲染事件之间运行,所以无论开始
PageAsyncTask pat = new PageAsyncTask(BeginAsync, EndAsync, null, null, true); this.RegisterAsyncTask(pat);完全无视Guffa的回答,还没有足够的声誉来投票给他,但这完全是误导和可怕的错误. Tony_Henrich的链接非常好,这是另一个同样有用的东西: http://msdn.microsoft.com/en-us/magazine/cc163725.aspx
所有DataSource控件都在Page_PreRender之后自动数据绑定(如果之前还没有手动) – 所以是的,您可以绑定所有PageAsyncTask事件处理程序中的数据,甚至是Page_PreRenderComplete(仅在每个PageAsyncTask完成或超时后启动).
PageAsyncTask最适合在处理数据库,Web服务,文件I / O以及CPU等待数据处理的所有其他操作时使用 – 但不适用于CPU密集型或长时间运行的计算(CPU忙时).
说了这么多,只有当两个或多个PageAsyncTask并行运行时,页面才会处理得更快 – 但是,即使只有一个PageAsyncTask,请求线程也会被发送回池(有限供应),而I / O线程会处理操作,从而释放IIS以接收更多传入请求,直到任务完成(然后它从池中获取请求线程,不一定是同一个,并继续页面处理).