.NET Remoting 经典远程回调模型(二)
为了简化客户端代码,可以将远程对象实现为异步操作的形式。
那么,当异步操作完成时如何通知客户端呢??
这里,来说下第二种,使用定制委托实现回调。
接着上个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 经典远程回调模型(二)相关推荐
- nlp中的经典深度学习模型(二)
attention和transformer都是面试重点. 文章目录 3 seq2seq+Attention 3.1 Sequence to Sequence Model 3.1.2 模型介绍 3.1. ...
- Android进阶——AIDL详解之使用远程服务AIDL实现进程间带远程回调接口和自定义Bean的较复杂通信小结(二)
文章大纲 引言 一.远程回调AIDL接口的应用 1.封装基本的父类和一些工具类 2. 创建服务端的AIDL 2.1.定义回调AIDL接口 2.2.定义业务AIDL接口 3.实现服务端对应AIDL的带有 ...
- 各种经典透镜投影模型
各种经典透镜投影模型 Models for the various classical lens projections 鱼眼镜片与其他镜片同等重要 where fisheye lenses are ...
- 经典Wide Deep模型介绍及tensorflow 2代码实现
Wide & Deep模型介绍 目标: 内容: 一. 模型介绍 二. 推荐系统架构 三. Wide部分 四. Deep部分 五. Wide和Deep一起训练 六. 系统实现 (1)数据生成阶段 ...
- tflearn教程_利用 TFLearn 快速搭建经典深度学习模型
使用 TensorFlow 一个最大的好处是可以用各种运算符(Ops)灵活构建计算图,同时可以支持自定义运算符(见本公众号早期文章<TensorFlow 增加自定义运算符>).由于运算符的 ...
- Alexnet_经典的CNN模型架构-LeNet、AlexNet、VGG、GoogleLeNet、ResNet
本文将引入 ImageNet图像数据库,并介绍以下几种经典的CNN模型架构: LeNet.AlexNet.VGG.GoogleLeNet.ResNet 1.ImageNet介绍 ImageNet是一个 ...
- 互联网大厂面试官:推荐系统最经典的 排序模型 有哪些?你了解多少?
互联网大厂面试官:推荐系统最经典的 排序模型 有哪些?你了解多少? 提示:最近系统性地学习推荐系统的课程.我们以小红书的场景为例,讲工业界的推荐系统. 我只讲工业界实际有用的技术.说实话,工业界的技术 ...
- mysql远程连接数据库的二种方法_mysql 远程连接数据库的二种方法
mysql 远程连接数据库的二种方法 一.连接远程数据库: 1.显示密码 如:MySQL 连接远程数据库(192.168.5.116),端口"3306",用户名为"roo ...
- Django模型(二)
Django模型(二) 文章目录 Django模型(二) 一.字段查询 1.查看mysql数据库日志 二.条件运算符 1.查询等 2.模糊查询 3.空查询 4. 范围查询 5. 比较查询 6).日期查 ...
最新文章
- 极客新闻——08、高效团队善用的3个敏捷方法
- 如何在Python中调用Windows的cmd命令?
- 关于Zigbee的常识
- mongod备份还原常用命令
- python批量处理csv_Python批量处理csv并保存过程代码解析
- Linux驱动如何在不同版本上快速迭代升级
- oracle数据库存储结构语句,oracle基本语句(第五章、数据库逻辑存储结构管理)...
- AI算法连载08:统计学之贝叶斯
- SEO优化篇 - 搜索引擎抓取href=#!锚点
- vue-cli搭建项目(笔记)
- 实体验证---测试代码
- linux安装软件w,Linux软件安装小结
- c语言寻找公共字符串,C语言查找两个字符串中的最大公共子串
- 从不同解码策略看机器如何生成文本
- Neokylin-Server离线环境、跨主机、使用Docker部署PXC集群
- 【目标检测】《DINO: DETR with Improved DeNoising Anchor Boxes for End-to-End Object Detection》论文阅读笔记
- J9数字论:如何避免踩雷多头陷阱?
- nginx之allow、deny
- python音乐可视化壁纸_Python 制作一个漂亮的音乐节奏可视化效果
- 查询快递物流提前签收的单号,快速分析筛选的方法
热门文章
- r语言min-max归一化_如何在R中使用min()和max()
- c#访问修饰符修饰无效_C中的数据类型和修饰符
- kotlin web_Kotlin Web应用程序教程
- Java String substring()方法示例
- ios标签控制器怎么用_带故事板的iOS标签栏控制器
- luhn算法java_Java信用卡验证– Java中的Luhn算法
- jquery 图像滑块_10个很棒的jQuery图像滑块插件
- python多线程结束线程_Python线程– Python多线程
- 两男子骑摩托车抢夺宴席礼金 警方:嫌疑人已被抓获
- 点击编辑table变为可编辑状态