3

submit()我的一个网页上有一个非常长的函数,它完全在服务器上运行,我想向客户端显示一个进度条来显示进度。

20%只要我可以向他们展示一些东西,我可以每隔一段时间更新一次。

这甚至可能吗?也许某种控制runat="server"?我有点迷失在这里的想法。

4

2 回答 2

4

这是可能的,但在基于 Web 的环境中比在基于桌面的环境中更难做到。

您要做的就是向服务器提交请求,让服务器启动异步任务,然后将响应发送回客户端。然后,客户端将需要定期轮询服务器(可能/理想情况下使用 AJAX)以获取更新。服务器将希望在长时间运行的任务主体中设置一个 Session 值(或使用其他存储状态的方法),该值可由客户端的轮询方法访问。

它很讨厌,很乱,而且效率低下,所以如果有很多用户执行它,你就不想这样做。

是 Microsoft 的示例实现。请注意,此示例使用了UpdatePanel对象、ASP 计时器等,这使得代码编写起来相当简单(而且仍然不是那么漂亮),但这些组件相当“繁重”。使用显式 AJAX 调用、创建 Web 方法而不是执行完整的回发等将大大提高性能。正如我所说,即使在最好的情况下,这也是一场性能噩梦。如果您有很多用户或者这是一个执行非常频繁的操作,请不要这样做。如果它只是供一小部分管理员用户偶尔使用,那么这可能不是问题,而且从用户的角度来看它确实增加了很多。

于 2012-11-26T22:13:30.073 回答
0

我会看看.net 4.5 的异步和等待。

在 ASP.NET MVC 4 中使用异步方法——(MVC 示例我知道对不起)

然后使用进度条查看此示例

于 2012-11-26T22:19:43.130 回答