ASP.NET线程中更新UI控件

课文 2014-04-01 04:52:47
最近在学习ASP.NET,遇到一个问题:在线程中无法更新UI控件,代码如下:
protected void Button4_Click(object sender, EventArgs e)
{

Thread thread = new Thread(new ThreadStart(dowork));
thread.Start();
}



public void dowork()
{
//Label1.Text = "开始线程";
int st1;
UInt32 Snr=0;
StringBuilder Data1 = new StringBuilder(10);
Data1.Length = 10;

while(true)
{

st1 = Cdll.rf_srd_eeprom(icdev1, 0, 1, Data1);
if (st1 != 0)
{
Lab1.Text = "故障或为初始化";
}
else
{
Lab1.Text = Data1.ToString();
st1 = Cdll.rf_reset(icdev1, 60);
st1 = Cdll.rf_card(icdev1, 1, ref Snr);

if (st1 != 0)
{
Lab3.Text = "寻卡失败";

}
else
{
Lab2.Text = "寻卡成功";
}
}
System.Threading.Thread.Sleep(2000);
}


结果运行时Lab1的内容可以正常显示,尔Lab2和Lab3却无法显示,请问是什么原因
...全文
307 10 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
课文 2014-04-09
  • 打赏
  • 举报
回复
引用 4 楼 showbo 的回复:
asp.net是b/s,不是c/s结构 b/s发送信息到客户端后,就需要客户端的js来更新,服务器端的更新不会反映到客户端的界面上。 要动态服务器端的内容,要用ajax,楼主去了解下什么是ajax,微软的UpdatePanel也能执行你这种操作
啊,知道了,enabled属性
课文 2014-04-09
  • 打赏
  • 举报
回复
引用 7 楼 showbo 的回复:
[quote=引用 5 楼 u010242253 的回复:] [quote=引用 4 楼 showbo 的回复:] asp.net是b/s,不是c/s结构 b/s发送信息到客户端后,就需要客户端的js来更新,服务器端的更新不会反映到客户端的界面上。 要动态服务器端的内容,要用ajax,楼主去了解下什么是ajax,微软的UpdatePanel也能执行你这种操作
感谢回答,但是为什么Lab1的内容可以更新出来呢?[/quote] 点击按钮的时候会请求一次服务器,这次请求启动的线程执行计算得到st1 为0,设置了label1发送给客户端,所以呈现了出来 虽然这个线程还继续执行,但是已经不会继续将后续的结果发送到客户端了,这个线程和执行aspx页面的线程是独立的 页面更新这种一般是用ajax来完成,或者updatepanel(其实也是ajax,只是做了包装),线程比较少用于这种应用[/quote] 我看了下AJAX,里面的Timer控件是从页面返回时开始计时,但我想单击一个按钮之后开始计时任务,请问该如何实现?
课文 2014-04-08
  • 打赏
  • 举报
回复
引用 7 楼 showbo 的回复:
[quote=引用 5 楼 u010242253 的回复:] [quote=引用 4 楼 showbo 的回复:] asp.net是b/s,不是c/s结构 b/s发送信息到客户端后,就需要客户端的js来更新,服务器端的更新不会反映到客户端的界面上。 要动态服务器端的内容,要用ajax,楼主去了解下什么是ajax,微软的UpdatePanel也能执行你这种操作
感谢回答,但是为什么Lab1的内容可以更新出来呢?[/quote] 点击按钮的时候会请求一次服务器,这次请求启动的线程执行计算得到st1 为0,设置了label1发送给客户端,所以呈现了出来 虽然这个线程还继续执行,但是已经不会继续将后续的结果发送到客户端了,这个线程和执行aspx页面的线程是独立的 页面更新这种一般是用ajax来完成,或者updatepanel(其实也是ajax,只是做了包装),线程比较少用于这种应用[/quote]
引用 7 楼 showbo 的回复:
[quote=引用 5 楼 u010242253 的回复:] [quote=引用 4 楼 showbo 的回复:] asp.net是b/s,不是c/s结构 b/s发送信息到客户端后,就需要客户端的js来更新,服务器端的更新不会反映到客户端的界面上。 要动态服务器端的内容,要用ajax,楼主去了解下什么是ajax,微软的UpdatePanel也能执行你这种操作
感谢回答,但是为什么Lab1的内容可以更新出来呢?[/quote] 点击按钮的时候会请求一次服务器,这次请求启动的线程执行计算得到st1 为0,设置了label1发送给客户端,所以呈现了出来 虽然这个线程还继续执行,但是已经不会继续将后续的结果发送到客户端了,这个线程和执行aspx页面的线程是独立的 页面更新这种一般是用ajax来完成,或者updatepanel(其实也是ajax,只是做了包装),线程比较少用于这种应用[/quote] 了解了,非常感谢!
  • 打赏
  • 举报
回复
引用 5 楼 u010242253 的回复:
[quote=引用 4 楼 showbo 的回复:] asp.net是b/s,不是c/s结构 b/s发送信息到客户端后,就需要客户端的js来更新,服务器端的更新不会反映到客户端的界面上。 要动态服务器端的内容,要用ajax,楼主去了解下什么是ajax,微软的UpdatePanel也能执行你这种操作
感谢回答,但是为什么Lab1的内容可以更新出来呢?[/quote] 点击按钮的时候会请求一次服务器,这次请求启动的线程执行计算得到st1 为0,设置了label1发送给客户端,所以呈现了出来 虽然这个线程还继续执行,但是已经不会继续将后续的结果发送到客户端了,这个线程和执行aspx页面的线程是独立的 页面更新这种一般是用ajax来完成,或者updatepanel(其实也是ajax,只是做了包装),线程比较少用于这种应用
课文 2014-04-04
  • 打赏
  • 举报
回复
不要沉啊。。。。。。。。。。。。。。。。
课文 2014-04-03
  • 打赏
  • 举报
回复
引用 4 楼 showbo 的回复:
asp.net是b/s,不是c/s结构 b/s发送信息到客户端后,就需要客户端的js来更新,服务器端的更新不会反映到客户端的界面上。 要动态服务器端的内容,要用ajax,楼主去了解下什么是ajax,微软的UpdatePanel也能执行你这种操作
感谢回答,但是为什么Lab1的内容可以更新出来呢?
  • 打赏
  • 举报
回复
asp.net是b/s,不是c/s结构 b/s发送信息到客户端后,就需要客户端的js来更新,服务器端的更新不会反映到客户端的界面上。 要动态服务器端的内容,要用ajax,楼主去了解下什么是ajax,微软的UpdatePanel也能执行你这种操作
课文 2014-04-01
  • 打赏
  • 举报
回复
求大神解答~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
课文 2014-04-01
  • 打赏
  • 举报
回复
设断点调试发现Lab2和Lab3的Text值是改变的,只是页面上没有显示出来
课文 2014-04-01
  • 打赏
  • 举报
回复
自己顶~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

28,409

社区成员

发帖
与我相关
我的任务
社区描述
ASP即Active Server Pages,是Microsoft公司开发的服务器端脚本环境。
社区管理员
  • ASP
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧