初探Remoting双向通信(四)

本文介绍了在项目中应用Remoting实现双向通信的过程,详细讨论了服务器订阅事件函数的修改,以解决客户端同步更新和界面假死的问题。通过遍历委托列表并使用BeginInvoke避免阻塞,实现了几乎同步的通信效果,为项目带来了重大突破。
摘要由CSDN通过智能技术生成

    之前已经从基本原理上实现了Remoting的双向通信。准备将其移植到我的项目中,不过为了成功移植,我还是需要再把以前的版本稍作修改才能放心的去做。项目中当一台机子中有工作人员进行了预警信息标记时(在地图上会有一个标志),其他机子需要同步更新。这就是说任何一个客户端进行标记时需要通知服务器,然后让服务器去广播标记。这一个小动作就需要双向通信一次。按照项目需求,我再次修改版本,这次只需要改一个函数:

修改服务器订阅事件函数如下:

  void marshal_obj_SubscribeAtServer(string msg)
        {
            //跨线程调用
            textBox2.Invoke(new Action<string>(str => { textBox2.AppendText(str); }), msg);
            //订阅函数不在主线程,需另起线程触发广播方法
            Thread th = new Thread(new ThreadStart(() => {
                marshal_obj.TriggerAtServer("服务器--" + this.ServerIP() + System.Environment.NewLine + "我是服务器,我发现一个客户端有标记行为,我要让你们全部都标记!" + System.Environment.NewLine);
            }));
            th.Start();
        }


评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值