您的位置:首页 > 其它

Winform实现后台推送,数据跨线程实时刷新控件

2016-03-07 15:18 1051 查看
1. 用委托事件实现数据实时推送并刷新页面,适用于前台和后台松耦合但没有分布式部署的情况。

2. 首先定义一个全局的委托事件

public class Notice
{
public delegate void MessageRecieved(DataTable dt);//定义委托

public static event MessageRecieved OnMessageRecieved;//用委托定义事件
<span style="white-space:pre">	</span>//触发事件的方法
public static void MessageSend(DataTable dt)
{
if(OnMessageRecieved != null)
{
OnMessageRecieved(dt);
}

}
}
3. 后台线程调用MEssageSend方法

<span style="white-space:pre">	</span>//事件推送,跨线程  BY ZZH
Notice.MessageSend(CalDataTable);
4. 在实时刷新的界面里注册委托方法,注册的数量没限制

<span style="white-space:pre">	</span>//定义委托用来处理页面刷新,因为这是跨线程的 BY ZZH
public delegate void UpdateControls(DataTable dt);
UpdateControls upd = null;

private void Form1_Load(object sender, EventArgs e)
{
Notice.OnMessageRecieved += OnMessageReceived;
upd = new UpdateControls(ChangeLabels);
}
//这里调用窗体的Invoke方法,也就是说用窗体的线程执行后台线程委托的方法
public void OnMessageReceived(DataTable calDataTable)
{
this.BeginInvoke(upd, calDataTable);
}
<span style="white-space:pre">	</span>private void ChangeLabels(DataTable dt)
{
//控件绑定。。。。。
}


如果想要实现分布是部署跨平台,可参考这篇文章/article/8327692.html
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: