网上已经有很多Web进度条的例子,但是很多都是估算时间,不能正真反应任务的真实进度。我自己结合多线程和ShowModalDialog制做了一个实时进度条,原理很简单:使用线程开始长时间的任务,定义一个Session,当任务进行到不同的阶段改变Session的值,线程开始的同时使用ShowModalDialog打开一个进度条窗口,不断刷新这个窗口获取Session值,反应出实时的进度。下面就来看看具体的代码:(文章结尾处下载源代码)
先新建一个Default.aspx页面,
客户端代码:
body MS_POSITIONING="GridLayout"
form id="Form1" method="post" runat="server"
br
br
asp:Button id="Button1" runat="server" Text="Start Long Task!"/asp:Button
/form
/body
服务器端代码:
using System;