我在 ASP.NET 4.0 上的 Web 应用程序中使用了 ASP.NET 2.0 的异步页面功能。我已经通过方法设置了开始和结束任务操作AddOnPreRenderCompleteAsync
,并且在页面加载时我有一个标签,上面写着“ operation started
”,然后开始任务开始。
为什么在异步操作完成之前我看不到这个标签?实际上,它与同步操作一样好。
异步任务同时执行时,页面不应该加载并显示标签吗?
我在 ASP.NET 4.0 上的 Web 应用程序中使用了 ASP.NET 2.0 的异步页面功能。我已经通过方法设置了开始和结束任务操作AddOnPreRenderCompleteAsync
,并且在页面加载时我有一个标签,上面写着“ operation started
”,然后开始任务开始。
为什么在异步操作完成之前我看不到这个标签?实际上,它与同步操作一样好。
异步任务同时执行时,页面不应该加载并显示标签吗?
为什么在异步操作完成之前我看不到这个标签?
因为您只在服务器端创建异步操作。要完全理解这个概念,您需要了解ASP.Net 页面生命周期。简而言之,在页面完全处理之前,对用户的响应不会返回
所以你可能想知道……那有什么好处呢?那么实际的好处是可扩展性。ASP.Net 提供了固定数量的线程用于处理请求,当使用了最大线程数时,传入的请求将被放入队列中,从而可能阻塞 Web 应用程序。
当您调用异步方法(如您的情况)时,您正在释放 ASP.Net 使用的线程,然后可用于处理传入请求。当您的耗时操作完成后,将在新线程中重新创建页面的轻量级实例以处理您的end 方法
如果要显示操作的进度,则需要使用 AJAX 调用 server-method
异步任务同时执行时,页面不应该加载并显示标签吗?
没有
了解更多信息: