Winform实现后台推送,数据跨线程实时刷新控件
2016-03-07 15:18
1051 查看
1. 用委托事件实现数据实时推送并刷新页面,适用于前台和后台松耦合但没有分布式部署的情况。
2. 首先定义一个全局的委托事件
如果想要实现分布是部署跨平台,可参考这篇文章/article/8327692.html
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
相关文章推荐
- lintcode:Merge Two Sorted Lists
- poj 2478 Farey Sequence(欧拉函数)
- 继承LinearLayout实现大众点评标题和图表的效果
- PAT (Basic Level)1028. 人口普查
- Unity3D 移动平台Path对应路径以及文件路径权限
- MathType插入带序号公式的两种方法
- 在apache hadoop2.6 上部署hive 并将hive数据源存储于Mysql
- 基础排序算法,java实现(快速,冒泡,选择,堆排序,插入)
- M1卡修改各区块控制位值和数据
- js 函数的传值问题
- poj2533
- 【Jmeter】Jmeter聚合报告分析
- git常用命令
- ECS Linux服务器安装JDK配置JAVA环境
- 消息队列MQ】各类MQ比较
- C++文件操作详解(ifstream、ofstream、fstream)
- Python基础学习教程-第2讲安装Python
- NFS mount
- wamp环境项目连接虚拟机mongo出现连接失败,原因是防火墙端口没开
- 【c/c++】单链表、头指针、头结点、首元节点