1

我在 ASP.NET 4.0 上的 Web 应用程序中使用了 ASP.NET 2.0 的异步页面功能。我已经通过方法设置了开始和结束任务操作AddOnPreRenderCompleteAsync,并且在页面加载时我有一个标签,上面写着“ operation started”,然后开始任务开始。

为什么在异步操作完成之前我看不到这个标签?实际上,它与同步操作一样好。

异步任务同时执行时,页面不应该加载并显示标签吗?

4

1 回答 1

1

为什么在异步操作完成之前我看不到这个标签?

因为您只在服务器端创建异步操作。要完全理解这个概念,您需要了解ASP.Net 页面生命周期简而言之,在页面完全处理之前,对用户的响应不会返回

所以你可能想知道……那有什么好处呢?那么实际的好处是可扩展性。ASP.Net 提供了固定数量的线程用于处理请求,当使用了最大线程数时,传入的请求将被放入队列中,从而可能阻塞 Web 应用程序。

当您调用异步方法(如您的情况)时,您正在释放 ASP.Net 使用的线程,然后可用于处理传入请求。当您的耗时操作完成后,将在新线程中重新创建页面的轻量级实例以处理您的end 方法

如果要显示操作的进度,则需要使用 AJAX 调用 server-method

异步任务同时执行时,页面不应该加载并显示标签吗?

没有

了解更多信息:

如何在 asp.netweb 应用程序中显示第一个异步结果?

于 2012-07-16T08:53:51.670 回答