客户端调用 WCF 的几种方式

转载网络代码.版权归原作者所有.....

客户端调用WCF的几种常用的方式:1普通调用
var factory = new DataContent.ServiceReference1.CustomerServiceClient();factory.Open();List<DataContent.ServiceReference1.Customer> lis = factory.GetAllCustomerList();factory.Close();2 异步调用 1  var factory = new DataContent.ServiceReference1.CustomerServiceClient();IAsyncResult anynRsult = factory.BeginGetAllCustomerList(nullnull);List<DataContent.ServiceReference1.Customer> lis = factory.EndGetAllCustomerList(anynRsult);factory.Close();
该方法将会阻塞当前线程并等待异步方法的结束,往往不能起到地多线程并发执行应有的作用。我们真正希望的是在异步执行结束后自动回调设定的操作,这样就可以采用回调的方式来实现这样的机制了。

在下面的代码中,我们通过一个匿名方法的形式定义回调操作,由于在回调操用中输出运算结果时需要使用到参与运算的操作数,我们通过BeginGetAllCustomerList方法的最后一个object类型参数实现向回调操作传递数据,在回调操作中通过IAsyncResult对象的AsyncState获得。


          2  var factory = new DataContent.ServiceReference1.CustomerServiceClient();factory.BeginGetAllCustomerList(delegate(IAsyncResult asyncResult){lis = factory.EndGetAllCustomerList(asyncResult);factory.Close();}, null);
     3通信工厂 
      var factory = new ChannelFactory<DataContent.ServiceReference1.ICustomerService>(new BasicHttpBinding(), new EndpointAddress("http://localhost:10625/Service1.svc"));try{var proxy = factory.CreateChannel();using (proxy as IDisposable){return proxy.GetAllCustomerList();}}catch (Exception ex){Console.WriteLine(ex.Message);return new List<DataContent.ServiceReference1.Customer>();}finally{factory.Close();}
4 通过事件注册的方式进行异步服务调用
 var factory = new DataContent.ServiceReference1.CustomerServiceClient();factory.GetAllCustomerListCompleted += (sender, e) =>{lis = e.Result;};factory.GetAllCustomerListAsync();factory.Close();

 

在这里做个备注:防止下次忘记

 

转载于:https://www.cnblogs.com/w2011/p/3181946.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/448122.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

VUE:组件间相互跳转、页面带参跳转

前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到教程。 只是记录下用法&#xff1a; 从 A 页面跳转到 B 页面。 如下写法&#xff1a; A 页面跳转方式&#xff1a; 代码&#xff1a; getdat…

Protocol Buffer 序列化

Protobuf使用 目录 proto3的更新定义协议格式编译protobufprotobuf_API 枚举和嵌套类标准消息方法解析和序列化 写一条消息阅读消息编译Protobuf扩展优化高级用法 proto3的更新 在第一行非空白非注释行&#xff0c;必须写&#xff1a; syntax "proto3";字段规…

如何调整反光镜和座椅的位置 为您支招

【太平洋汽车网 学车频道】首先要进行座椅的高度调整&#xff0c;上下调整座椅让头部离车顶至少还有一拳的距离。如果座椅调得太高&#xff0c;车辆在颠簸时头部容易碰到车顶&#xff0c;调得太矮了又会影响视线。然后是前后距离的调整&#xff0c;当脚踩住制动踏板至最深处时…

关于hexo与github使用过程中的问题与笔记

快速阅读 如何用github 和hexo 创建一个blog 1.github中要新建一个与用户名同一样的仓库&#xff0c; 如:homehe.github.io - 必须是io后缀。一个帐户 只能建立一个2. 绑定域名 &#xff0c; A记录指向ip, cname记录指向homehe.github.io 3. 配置sshkey - 个人设置 -> SSH a…

CSS 中 的 margin、border、padding 区别 (内边距、外边距)

前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到教程。 图解CSS padding、margin、border属性 W3C组织建议把所有网页上的对像都放在一个盒(box)中&#xff0c;设计师可以通过创建定义来控制这…

CMake 常用的预定义变量

CMake 常用的预定义变量 PROJECT_NAME : 通过 project() 指定项目名称 PROJECT_SOURCE_DIR : 工程的根目录 PROJECT_BINARY_DIR : 执行 cmake 命令的目录 CMAKE_CURRENT_SOURCE_DIR : 当前 CMakeList.txt 文件所在的目录 CMAKE_CURRENT_BINARY_DIR : 编译目录&#xff0c;…

什么是转向灯?使用转向灯有何技巧?

什么是转向灯&#xff1f;如何使用转向灯&#xff1f;新手司机对车辆还不是很熟悉&#xff0c;如何正确使用转向灯&#xff0c;尤其是在不同路段中该怎么正确使用转向灯&#xff0c;成为了很多新手们的困扰之一&#xff0c;今天我们就来为大家解决这个问题吧&#xff01; 转向灯…

基于Flask开发企业级REST API应用(一)

关于我 编程界的一名小小程序猿&#xff0c;目前在一个创业团队任team lead&#xff0c;技术栈涉及Android、Python、Java和Go&#xff0c;这个也是我们团队的主要技术栈。 Github&#xff1a;github.com/hylinux1024 微信公众号&#xff1a;angrycode 前面对Python WEB框架Fla…

解决:Do not use built-in or reserved HTML elements as component id: form

前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到教程。 1. vue 新写了个组件&#xff0c;运行工程成功&#xff0c;但界面没有出效果&#xff0c;F12 提示有一个警告&#xff1a; Do not use …

移动语义,右值引用

移动语义 目录 右值引用变量是左值move库函数移动构造函数和移动赋值移动操作库容器和异常移动赋值操作符移动后的对象必须是可以析构的合成移动操作右值移动左值拷贝右值在无法被移动时进行拷贝拷贝和交换赋值操作与移动移动迭代器右值引用和成员函数右值与左值引用的成员函…

集合练习:登录注册功能

需求&#xff1a; 1、登录账号唯一&#xff0c;在注册时验证输入的账号是否可用&#xff0c;若已存在&#xff0c;则不可用&#xff0c;若不存在则可用2、登录时使用账号密码进行验证1 /**2 * author Administrator3 * 登录信息 4 */5 public class UserLogin {6 …

vue 通信、传值的多种方式(超详细)

前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到教程。 一、通过路由带参数进行传值 ①两个组件 A和B,A组件通过query把orderId传递给B组件&#xff08;触发事件可以是点击事件、钩子函数等&am…

新手开车 驾驶小秘诀要牢记

有很多人刚买到新车兴奋异常&#xff0c;凭着并不熟练的驾驶技术&#xff0c;过了几天的车瘾后发现&#xff0c;刚买的车怎么出现了这样那样的问题 有很多人刚买到新车兴奋异常&#xff0c;凭着并不熟练的驾驶技术&#xff0c;过了几天的车瘾后发现&#xff0c;刚买的车怎么出现…

chrome中Google插件导出导入

导出插件&#xff1a; 一般电脑默认将你安装的插件存放的位置在&#xff1a;C:\Users&#xff08;用户&#xff09;\你的电脑名称\AppData\Local\Google\Chrome\User Data\Default\Extensions 这个文件夹下。这里的 AppData 是个隐藏文件夹&#xff0c;需要显示隐藏文件夹才行…

科目三电子路考操作流程

如果你已经通过科目二场内五项考试&#xff0c;正准备参加科目三电子路考的话&#xff0c;不妨看看由邕江驾校李师傅操作讲解的电子路考考试流程演示视频&#xff0c;每项都有详细介绍操作要领及评判标准哦。 科目三考试项目&#xff1a;上车准备、起步、路口左转弯、通过学校区…

vue Bus 总线 组件间通信

前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到教程。 有时候两个组件也需要通信&#xff08;非父子关系&#xff09;。当然Vue2.0提供了Vuex&#xff0c;但在简单的场景下&#xff0c;可以使…

C++没有调用析构函数

github地址 在项目中遇到一个问题&#xff0c;析构函数没有调用产生了内存泄露。 具体见valgrind检测libevent内存泄露 我们看两个例子 demo1 class Test1; void del(Test1* obj){delete obj; } class Test1{ public:Test1(){printf("Test1\r\n");}~Test1(){pri…

实际操作之路考的这些事

辛苦了这么久练习路考&#xff0c;今天终于实际操作到我路考了。上车以后。关上车门。把考试的单地上给考官。还没有认真的去看考官一眼。于是就听到考官用低沉的声音对我说&#xff1a;你好&#xff01;当时就感觉有一点意外。没想到考官你这么有礼貌。然后我就没那么紧张了&a…

[C# 网络编程系列]专题十二:实现一个简单的FTP服务器

引言&#xff1a; 休息一个国庆节后好久没有更新文章了&#xff0c;主要是刚开始休息完心态还没有调整过来的&#xff0c; 现在差不多进入状态了&#xff0c; 所以继续和大家分享下网络编程的知识&#xff0c;在本专题中将和大家分享如何自己实现一个简单的FTP服务器。在我们平…

vue 2 使用 Bus.js 实现兄弟 (非父子) 组件通信 简单案例

前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到教程。 vue2中废弃了$dispatch和$broadcast广播和分发事件的方法。父子组件中可以用props和$emit()。如何实现非父子组件间的通信&#xff0c;可…