为了简化客户端代码,可以将远程对象实现为异步操作的形式。

那么,当异步操作完成时如何通知客户端呢??

这里,来说下第二种,使用定制委托实现回调。

接着上个SimpleMath类说,

public class SimpleMath:MarshalByRefObject

{

private delegate int opDelegate(int n1, int n2);

public delegate void ClientCallbackDelegate(int result);

public int Add(int n1, int n2)

{

return n1+n2;

}

public void AsyncAdd(int n1,int n2,ClientCallbackDelegate callback)

{

opDelegate op=  new opDelegate(Add);

op.BeginInvoke(n1,n2,new AsycCallback(DoClientCallback),callback);

}

private void DoClientCallback(IAsyncResult ar)

{

AsyncResult asyncResult=(AsyncResult)ar;

opDelegate  op= (opDelegate)asyncResult.AsyncDelegate;

int result=op.EndInvoke(ar);

ClientCallbackDelegate callback=(ClientCallbackDelegate)ar.AsyncState;

callback(result);

}

}

//以下这个类是重点:

//必须把其元数据部署到服务器端;

//其实现要在客户端。

//此时,原来的客户端成了服务端,服务端成了客户端。

public class SimpleMathResult:MarshalByRefObject

{

public void MathCallback(int result)

{

Console.WriteLine(result.tostring());

}

}

class ClientMain

{

static void Main(string[] args)

{

RemotingConfguration.Configure("MathClient.exe.config");

SimpleMath math= new SimpleMath();

SimpleMathResult mathResult= new SimpleMathResult();

math.AsyncAdd(5,2,new SimpleMath.ClientCallbackDelegate(mathResult.MathCallback));

}

}

其实重点还是怎样传递委托实例,去调用我们对应的方法,这点很重要。

转载于:https://www.cnblogs.com/Mayvar/archive/2009/12/04/wanghonghua20091204.html

.NET Remoting 经典远程回调模型(二)相关推荐

  1. nlp中的经典深度学习模型(二)

    attention和transformer都是面试重点. 文章目录 3 seq2seq+Attention 3.1 Sequence to Sequence Model 3.1.2 模型介绍 3.1. ...

  2. Android进阶——AIDL详解之使用远程服务AIDL实现进程间带远程回调接口和自定义Bean的较复杂通信小结(二)

    文章大纲 引言 一.远程回调AIDL接口的应用 1.封装基本的父类和一些工具类 2. 创建服务端的AIDL 2.1.定义回调AIDL接口 2.2.定义业务AIDL接口 3.实现服务端对应AIDL的带有 ...

  3. 各种经典透镜投影模型

    各种经典透镜投影模型 Models for the various classical lens projections 鱼眼镜片与其他镜片同等重要 where fisheye lenses are ...

  4. 经典Wide Deep模型介绍及tensorflow 2代码实现

    Wide & Deep模型介绍 目标: 内容: 一. 模型介绍 二. 推荐系统架构 三. Wide部分 四. Deep部分 五. Wide和Deep一起训练 六. 系统实现 (1)数据生成阶段 ...

  5. tflearn教程_利用 TFLearn 快速搭建经典深度学习模型

    使用 TensorFlow 一个最大的好处是可以用各种运算符(Ops)灵活构建计算图,同时可以支持自定义运算符(见本公众号早期文章<TensorFlow 增加自定义运算符>).由于运算符的 ...

  6. Alexnet_经典的CNN模型架构-LeNet、AlexNet、VGG、GoogleLeNet、ResNet

    本文将引入 ImageNet图像数据库,并介绍以下几种经典的CNN模型架构: LeNet.AlexNet.VGG.GoogleLeNet.ResNet 1.ImageNet介绍 ImageNet是一个 ...

  7. 互联网大厂面试官:推荐系统最经典的 排序模型 有哪些?你了解多少?

    互联网大厂面试官:推荐系统最经典的 排序模型 有哪些?你了解多少? 提示:最近系统性地学习推荐系统的课程.我们以小红书的场景为例,讲工业界的推荐系统. 我只讲工业界实际有用的技术.说实话,工业界的技术 ...

  8. mysql远程连接数据库的二种方法_mysql 远程连接数据库的二种方法

    mysql 远程连接数据库的二种方法 一.连接远程数据库: 1.显示密码 如:MySQL 连接远程数据库(192.168.5.116),端口"3306",用户名为"roo ...

  9. Django模型(二)

    Django模型(二) 文章目录 Django模型(二) 一.字段查询 1.查看mysql数据库日志 二.条件运算符 1.查询等 2.模糊查询 3.空查询 4. 范围查询 5. 比较查询 6).日期查 ...

最新文章

  1. 极客新闻——08、高效团队善用的3个敏捷方法
  2. 如何在Python中调用Windows的cmd命令?
  3. 关于Zigbee的常识
  4. mongod备份还原常用命令
  5. python批量处理csv_Python批量处理csv并保存过程代码解析
  6. Linux驱动如何在不同版本上快速迭代升级
  7. oracle数据库存储结构语句,oracle基本语句(第五章、数据库逻辑存储结构管理)...
  8. AI算法连载08:统计学之贝叶斯
  9. SEO优化篇 - 搜索引擎抓取href=#!锚点
  10. vue-cli搭建项目(笔记)
  11. 实体验证---测试代码
  12. linux安装软件w,Linux软件安装小结
  13. c语言寻找公共字符串,C语言查找两个字符串中的最大公共子串
  14. 从不同解码策略看机器如何生成文本
  15. Neokylin-Server离线环境、跨主机、使用Docker部署PXC集群
  16. 【目标检测】《DINO: DETR with Improved DeNoising Anchor Boxes for End-to-End Object Detection》论文阅读笔记
  17. J9数字论:如何避免踩雷多头陷阱?
  18. nginx之allow、deny
  19. python音乐可视化壁纸_Python 制作一个漂亮的音乐节奏可视化效果
  20. 查询快递物流提前签收的单号,快速分析筛选的方法

热门文章

  1. r语言min-max归一化_如何在R中使用min()和max()
  2. c#访问修饰符修饰无效_C中的数据类型和修饰符
  3. kotlin web_Kotlin Web应用程序教程
  4. Java String substring()方法示例
  5. ios标签控制器怎么用_带故事板的iOS标签栏控制器
  6. luhn算法java_Java信用卡验证– Java中的Luhn算法
  7. jquery 图像滑块_10个很棒的jQuery图像滑块插件
  8. python多线程结束线程_Python线程– Python多线程
  9. 两男子骑摩托车抢夺宴席礼金 警方:嫌疑人已被抓获
  10. 点击编辑table变为可编辑状态