非主线程里如何更新控件 写了个UDP程序,建了个线程,线程里负责接收消息,但是线程里无法刷新页面,其实是我想根据收到的消息来更新页面,请高手帮忙 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 private void Button3_Click( object sender, System.EventArgs e ) { Response.AddHeader( "Refresh","0" );}//看看能用不 udp程序,在服务上跑吧,要想实时更新 客户端页面的话。两种方法。1,使用长连接。2,客户端页面定时刷新或后台 js刷新(ajax); llszn长连接是什么意思下面是我的主要代码,比较乱,大家凑合看吧 protected void Page_Load(object sender, EventArgs e) { if (!Page.IsPostBack) { trd = new Thread(new ThreadStart(this.ThreadTask)); trd.IsBackground = true; trd.Start(); } } //判断发送是否成功 void ThreadTask() { bool flag = false; //this.Label1.Text = "发送成功"; this.Label1.Visible = true; IPEndPoint ipend = new IPEndPoint(IPAddress.Any, 0); UdpClient upd = new UdpClient(Rport); Byte[] bt; while (true) { bt = upd.Receive(ref ipend); string msg = System.Text.Encoding.Unicode.GetString(bt); //upd.Close(); if (msg.Contains("OK") == true && msg.Contains("MIsSuccess") == true) { this.Label1.Text = "发送成功"; this.Label1.Visible = true; number = 1; flag = true; } else if (msg.Contains("MIsSuccess") == true && msg.Contains("Error") == true) { // Response.Write("<script>aleat('发送失败!'),</script>"); this.Label1.Text = "123"; this.Label1.Visible = true; number = 0; flag = false; Response.AddHeader("Refresh", "0"); } this.content.Text = msg; if (msg.Length > 0) { // return flag; } } } 你知道asp.net页面生命周期吗?页面生命周期转瞬即逝,而且就算没有完成,只要错过了输出html的时机你向Response.OutputStream写的任何东西也不能输出到客户端了。你的那个“刷新页面”是什么页面呢?什么页面主流在服务器上还会随时主动联系浏览器端而不会转瞬即逝呢? 什么页面主流在服务器上 ==> 什么页面驻留在服务器上为什么不开发winform程序呢?那样简单多了。 找高手,用代码解决 怎么解析通过WebService传递的XML格式的字符串? 大虾帮我看看,为什么我的Treeview不显示 页面缓存怎么做?(特急,在线等,如果今天项目不完成,我死定了) 菜鸟问datagird的问题 DataTable中如何提取某些满足特定条件的行? 帮我看看这段代码,怎么会事啊? 请教 在.net环境下如何统计站点中所有静态页面或asp页面的点击率? 读excel出错 网站经常出现超时的问题,高手请进,送分了 ##### 静态方法和实例化方法具体有什么区别?? 像互动百科,和百度百科那样的分段编辑asp.net怎么实现的啊!
private void Button3_Click( object sender, System.EventArgs e )
{
Response.AddHeader( "Refresh","0" );
}
//看看能用不
1,使用长连接。
2,客户端页面定时刷新或后台 js刷新(ajax);
长连接是什么意思下面是我的主要代码,比较乱,大家凑合看吧
protected void Page_Load(object sender, EventArgs e)
{
if (!Page.IsPostBack)
{
trd = new Thread(new ThreadStart(this.ThreadTask));
trd.IsBackground = true;
trd.Start();
}
} //判断发送是否成功
void ThreadTask()
{
bool flag = false;
//this.Label1.Text = "发送成功"; this.Label1.Visible = true;
IPEndPoint ipend = new IPEndPoint(IPAddress.Any, 0);
UdpClient upd = new UdpClient(Rport);
Byte[] bt;
while (true)
{
bt = upd.Receive(ref ipend); string msg = System.Text.Encoding.Unicode.GetString(bt);
//upd.Close();
if (msg.Contains("OK") == true && msg.Contains("MIsSuccess") == true)
{
this.Label1.Text = "发送成功";
this.Label1.Visible = true;
number = 1;
flag = true;
}
else if (msg.Contains("MIsSuccess") == true && msg.Contains("Error") == true)
{
// Response.Write("<script>aleat('发送失败!'),</script>");
this.Label1.Text = "123";
this.Label1.Visible = true;
number = 0;
flag = false;
Response.AddHeader("Refresh", "0");
} this.content.Text = msg; if (msg.Length > 0)
{ // return flag;
}
}
}