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)
{
//控件绑定。。。。。
}
如果想要实现分布是部署跨平台,可参考这篇文章 http://blog.csdn.net/xiaoyiyz/article/details/47616397