从后面的代码更新进度条

时间:2012-11-26 22:07:16

标签: c# asp.net progress-bar

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

我可以按照类似20%的间隔更新它,只要我能向他们展示一些东西。

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

2 个答案:

答案 0 :(得分:4)

可能,但在基于Web的环境中比在基于桌面的环境中做起来要困难得多。

您需要做的是向服务器提交请求,让服务器启动异步任务,然后将响应发送回客户端。然后,客户端需要定期轮询服务器(可能/最好使用AJAX)进行更新。服务器将希望在长时间运行的任务体内设置一个会话值(或使用其他一些存储状态的方法),客户端的轮询方法可以访问该值。

这是令人讨厌,凌乱和低效的,所以如果有很多用户执行此操作,你不会想要这样做。

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

答案 1 :(得分:0)

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

Using Asynchronous Methods in ASP.NET MVC 4 - (MVC示例我知道对不起)

Then check out this example using a progress bar