submit()
我的一个网页上有一个非常长的函数,它完全在服务器上运行,我想向客户端显示一个进度条来显示进度。
20%
只要我可以向他们展示一些东西,我可以每隔一段时间更新一次。
这甚至可能吗?也许某种控制runat="server"
?我有点迷失在这里的想法。
submit()
我的一个网页上有一个非常长的函数,它完全在服务器上运行,我想向客户端显示一个进度条来显示进度。
20%
只要我可以向他们展示一些东西,我可以每隔一段时间更新一次。
这甚至可能吗?也许某种控制runat="server"
?我有点迷失在这里的想法。
这是可能的,但在基于 Web 的环境中比在基于桌面的环境中更难做到。
您要做的就是向服务器提交请求,让服务器启动异步任务,然后将响应发送回客户端。然后,客户端将需要定期轮询服务器(可能/理想情况下使用 AJAX)以获取更新。服务器将希望在长时间运行的任务主体中设置一个 Session 值(或使用其他存储状态的方法),该值可由客户端的轮询方法访问。
它很讨厌,很乱,而且效率低下,所以如果有很多用户执行它,你就不想这样做。
这是 Microsoft 的示例实现。请注意,此示例使用了UpdatePanel
对象、ASP 计时器等,这使得代码编写起来相当简单(而且仍然不是那么漂亮),但这些组件相当“繁重”。使用显式 AJAX 调用、创建 Web 方法而不是执行完整的回发等将大大提高性能。正如我所说,即使在最好的情况下,这也是一场性能噩梦。如果您有很多用户或者这是一个执行非常频繁的操作,请不要这样做。如果它只是供一小部分管理员用户偶尔使用,那么这可能不是问题,而且从用户的角度来看它确实增加了很多。