public static System.Threading.Thread trd;//定义线程
private void Button2_Click(object sender, System.EventArgs e)//启动线程
{
trd = new System.Threading.Thread(new
System.Threading.ThreadStart(this.ThreadTask));
trd.IsBackground = true;
trd.Start();
}
private void ThreadTask()//执行程序
{
for (i = 0; i<=100000;i++)
{
System.Threading.Thread.Sleep(10);
this.Page.RegisterStartupScript
("aa","<script language=javascript>SetPorgressBar("+ i.ToString()
+");</script>") ;
}
}
private void Button3_Click(object sender, System.EventArgs e)//挂起线程
{
trd.Suspend();
}
<DIV id="Msg1">fdsafdsa</DIV>//网页上用来显示的DIV
网页脚本
function SetPorgressBar(i)
{
WriteText("Msg1",i);
}
function WriteText(id, str)
{
var strTag = '<font face="Verdana, Arial, Helvetica" size="2" color="#ea9b02"><B>' + str + '</B></font>';
if (document.all) document.all[id].innerHTML = strTag;
}
现在是启动线程后,在网页上面,DIV msg1上面根本就不显示循环变量里面i的值
private void Button2_Click(object sender, System.EventArgs e)//启动线程
{
trd = new System.Threading.Thread(new
System.Threading.ThreadStart(this.ThreadTask));
trd.IsBackground = true;
trd.Start();
}
private void ThreadTask()//执行程序
{
for (i = 0; i<=100000;i++)
{
System.Threading.Thread.Sleep(10);
this.Page.RegisterStartupScript
("aa","<script language=javascript>SetPorgressBar("+ i.ToString()
+");</script>") ;
}
}
private void Button3_Click(object sender, System.EventArgs e)//挂起线程
{
trd.Suspend();
}
<DIV id="Msg1">fdsafdsa</DIV>//网页上用来显示的DIV
网页脚本
function SetPorgressBar(i)
{
WriteText("Msg1",i);
}
function WriteText(id, str)
{
var strTag = '<font face="Verdana, Arial, Helvetica" size="2" color="#ea9b02"><B>' + str + '</B></font>';
if (document.all) document.all[id].innerHTML = strTag;
}
现在是启动线程后,在网页上面,DIV msg1上面根本就不显示循环变量里面i的值
解决方案 »
- C# devexpress gridcontrol 绑定bool类型显示问题
- 在一个解决方案创建了两个窗体,一个关闭后显示另一个怎么做
- winform 两个窗体间如何传递实体类对象?
- C# 编写贪心算法 求C#代码编写思路
- C# GDI+绘图问题
- 如何在使用Response.Write之后执行一个按钮的点击事件?
- 线程的问题,有代码
- 在webform界面下,如果获取datagrid的指单元格的值,兄弟们,帮忙了!!!!!!!!!!!
- 在C#中定义全局变量怎么定义
- 我想学C#,请问什么书比较好,最近比较忙,只有今天有空去书店,急,在线等
- 郁闷问题,谁能告诉我为什么!!我快疯了
- 请问如何获得跟主机同一网段的用户列表阿?
不懂你的意思我的意思:i的值,要实时地显示在网页上面FOR循环里面,i的值,要实时显示在网页上面,,
每循环一次,就改变一次
10毫秒 感觉不出来 把10 改成1000
("aa","<script language=javascript>SetPorgressBar("+ i.ToString()
+");</script>") ;单独放在一个按钮事件里面,就可以执行,放在线程里面就没有反应了,,而且加上FOR循环也没有反应了,
这样一定不行的,ASP.NET是客户发出请求服务器应答。
不支持服务器想客户端要求更改的,要是能的话世界大乱。
服务器不让这样
怎么会没有用呢?我打印i的值,我现在点.Button3_Click 挂起线程,,i的值就不会改变了,这说明,Button3_Click 挂起线程,是有用的,,
每循环一次,就改变一次
i在执行线程里面是显示不出来.你看我挂起线程的代码
trd.Suspend();
this.Page.RegisterStartupScript("aa","<script language=javascript>SetPorgressBar("+ i.ToString() +");</script>") ;
this.Page.RegisterStartupScript("aa","<script language=javascript>SetPorgressBar("+ i.ToString() +");</script>") ;ASP.NET是不会保存状态了,所以你的i在这里也恢复到了原来的值,i不会保存原来的值,所以你觉的i是停止了的原因吧。
线程中的这个延时,我可以写成,1000,也就是,1秒钟执行一次循环,基本上,我根据时间,然后挂起线程,来得到i的值,也可以对上,而且我挂起后,i的值就不会再改变了,一值是这个,
window.setInterval
这两个函数,可以拿按钮来实现吗?我是想让他开始就开始,想让他停止就停止,
("aa","<script language=javascript>SetPorgressBar("+ i.ToString()
+");</script>") ;
对,现在就是这样的,,,