c#关于点击按钮,后台按钮事件中写循环1到100000,让前台的label也显示出当前循环的值。
ASP.NETweb程序,我在一个按钮的事件中,写了一个循环,从1循环到100000,然后在前台用一个label显示当前循环的值,比如说当循环到100的时候,label能...
ASP.NET web程序, 我在一个按钮的事件中, 写了一个循环, 从1循环到100000,然后在前台用一个label显示当前循环的值,比如说当循环到100的时候, label能显示100。
这是我的部分源码 :
前台:
<asp:Label ID="lb_wait" runat="server" Text=""></asp:Label>
<asp:Button ID="bt_sc" runat="server" Text="导入" onclick="bt_sc_Click" />
后台:
protected void bt_sc_Click(object sender, EventArgs e)
{
int count=100000;
for (int i = 0; i < count; i++)
{
lb_wait.Text = (i + 1).ToString();
}
}
可是发现实现不了,当点击了按钮后,label会等程序执行完后才显示, 那时候已经显示100000了, 我想要的是想当点击按钮的时候, 每循环一次,然后label的值就改变一次并且在页面能显示看得到,其实我是想自己动手做的类似进度条的了。。。 展开
这是我的部分源码 :
前台:
<asp:Label ID="lb_wait" runat="server" Text=""></asp:Label>
<asp:Button ID="bt_sc" runat="server" Text="导入" onclick="bt_sc_Click" />
后台:
protected void bt_sc_Click(object sender, EventArgs e)
{
int count=100000;
for (int i = 0; i < count; i++)
{
lb_wait.Text = (i + 1).ToString();
}
}
可是发现实现不了,当点击了按钮后,label会等程序执行完后才显示, 那时候已经显示100000了, 我想要的是想当点击按钮的时候, 每循环一次,然后label的值就改变一次并且在页面能显示看得到,其实我是想自己动手做的类似进度条的了。。。 展开
4个回答
展开全部
楼上两位连前后台的关系都没搞明白,就回答问题,不是误人子弟么?
.net这个扯淡的机制,是前台提交后,后台进行处理,处理完毕后回传到前台显示,所以你这么做,肯定无法得到你想要的结果。
解决方法:
前台提交后,后台程序进行循环,将循环的值存入application级变量。客户端利用ajax发起定时请求,请求的页面将这个application变量值抓取后传回来,客户端显示。
为了能看到这个效果,第一是客户端请求频率要高,第二服务器端没算到一个要显示的值之后,需要sleep一段时间,否则变量被不断覆盖,根本来不及显示。
.net这个扯淡的机制,是前台提交后,后台进行处理,处理完毕后回传到前台显示,所以你这么做,肯定无法得到你想要的结果。
解决方法:
前台提交后,后台程序进行循环,将循环的值存入application级变量。客户端利用ajax发起定时请求,请求的页面将这个application变量值抓取后传回来,客户端显示。
为了能看到这个效果,第一是客户端请求频率要高,第二服务器端没算到一个要显示的值之后,需要sleep一段时间,否则变量被不断覆盖,根本来不及显示。
展开全部
实际上是从1显示到100000了,是因为他的速度太快,你看不到而已。
可以尝试在循环中断500ms
可以尝试在循环中断500ms
追问
不是运行速度问题, 我在本地运行的时候程序运行了有几秒很长的时间, 但是在这几秒的时间内, label的值是没有的, 直到程序完全运行完了然后label才会显示最后的一个值。。。
追答
循环中加 System.Threading.Thread.Sleep(500);
protected void bt_sc_Click(object sender, EventArgs e)
{
int count=100000;
for (int i = 0; i < count; i++)
{
System.Threading.Thread.Sleep(500);
lb_wait.Text = (i + 1).ToString();
}
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
循环太快了 看不到,加个线程睡眠试试。
追问
嗯,在网上查了, 好像是要加线程 ,您能给个例子吗?
追答
你这是web程序,为什么不在前台实现呢?
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
循环的时间太短太短了,根本反应不过来,所以肯定显示最后的值啊!
追问
不是运行速度问题, 我在本地运行的时候程序运行了有几秒很长的时间, 但是在这几秒的时间内, label的值是没有的, 直到程序完全运行完了然后label才会显示最后的一个值。。。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询