用委托事件实现数据实时推送并刷新页面,适用于前台和后台松耦合但没有分布式部署的情况。
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>
- Notice.MessageSend(CalDataTable);
4. 在实时刷新的界面里注册委托方法,注册的数量没限制
- <span style="white-space:pre"> </span>
- public delegate void UpdateControls(DataTable dt);
- UpdateControls upd = null;
-
- private void Form1_Load(object sender, EventArgs e)
- {
- Notice.OnMessageRecieved += OnMessageReceived;
- upd = new UpdateControls(ChangeLabels);
- }
-
- public void OnMessageReceived(DataTable calDataTable)
- {
- this.BeginInvoke(upd, calDataTable);
- }
- <span style="white-space:pre"> </span>private void ChangeLabels(DataTable dt)
- {
-
- }
如果想要实现分布是部署跨平台,可参考这篇文章
http://blog.csdn.net/xiaoyiyz/article/details/47616397