多线程编程学习笔记——异步调用WCF服务
接上文 多线程编程学习笔记——编写一个异步的HTTP服务器和客户端
本示例描述了如何创建一个WCF服务,并宿主在命令行应用程序中,客户端可以访问服务元数据,并以异步的方式消费它。
首先,我们创建了一个WCF服务。关于如何创建WCF服务,可以参考我之前的文章(WCF学习之旅—第三个示例之一(二十七)至WCF学习之旅—第三个示例之五(三十一))
然后,我们进行异步调用WCF的代理代码的生成。
第三、在visual studio 的资源管理器中,鼠标右键,在弹出菜单中选择“添加服务引用…”。如下图。
第四、在“添加服务引用”界面中,在选中需要添加的服务之后,点击“高级”按钮,在“服务引用设置”中选中“生成异步操作”,然后点击“确定”。如下图。
第五, 在解决方案资源管理器中,选中“FrmBook.cs”文件,在弹出的右键菜单中选择“打开”,或者使用鼠标左键双击。
第六, 在FrmBook.cs界面中,添加“异步查询选中书籍”按钮,并用鼠标双击按钮。
第七, 然后在 buttonAsyncGetBook_Click事件处理程序中添加以下代码:
/// <summary>
/// 异步查询书籍信息
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void buttonAsyncGetBook_Click(object sender, EventArgs e)
{
Books book = new Books();
var client=GetAsyncBook(book); // client.GetAwaiter().GetResult();
// ShowBook();
} private async Task GetAsyncBook(Books book)
{ BookServiceRef.BookServiceClient bookSvrClient = new BookServiceRef.BookServiceClient();
if (gridBooks.SelectedRows.Count > )
{
book = gridBooks.SelectedRows[].DataBoundItem as Books;
textBoxMsg.Text = book.BookID.ToString();
await Task.Delay();
var result = bookSvrClient.GetBookAsync(book.BookID.ToString());
textBoxMsg.Text = result.Result;
}
else
{
textBoxMsg.Text = "没有选中相应的记录!";
}
}
第八,使用异步调用WCF的这个服务之后,得到的结果如下图。我的截图跟WCF学习之旅—第三个示例系列 略微有点区别。
多线程编程学习笔记——异步调用WCF服务的更多相关文章
- 多线程编程学习笔记——使用异步IO(一)
接上文 多线程编程学习笔记——使用并发集合(一) 接上文 多线程编程学习笔记——使用并发集合(二) 接上文 多线程编程学习笔记——使用并发集合(三) 假设以下场景,如果在客户端运行程序,最的事情之一是 ...
- 多线程编程学习笔记——使用异步IO
接上文 多线程编程学习笔记——使用并发集合(一) 接上文 多线程编程学习笔记——使用并发集合(二) 接上文 多线程编程学习笔记——使用并发集合(三) 假设以下场景,如果在客户端运行程序,最的事情之一是 ...
- 多线程编程学习笔记——编写一个异步的HTTP服务器和客户端
接上文 多线程编程学习笔记——使用异步IO 二. 编写一个异步的HTTP服务器和客户端 本节展示了如何编写一个简单的异步HTTP服务器. 1.程序代码如下. using System; using ...
- 多线程编程学习笔记——async和await(一)
接上文 多线程编程学习笔记——任务并行库(一) 接上文 多线程编程学习笔记——任务并行库(二) 接上文 多线程编程学习笔记——任务并行库(三) 接上文 多线程编程学习笔记——任务并行库(四) 通过前面 ...
- 多线程编程学习笔记——async和await(二)
接上文 多线程编程学习笔记——async和await(一) 三. 对连续的异步任务使用await操作符 本示例学习如何阅读有多个await方法方法时,程序的实际流程是怎么样的,理解await的异步 ...
- 多线程编程学习笔记——async和await(三)
接上文 多线程编程学习笔记——async和await(一) 接上文 多线程编程学习笔记——async和await(二) 五. 处理异步操作中的异常 本示例学习如何在异步函数中处理异常,学习如何对多 ...
- Prism for WPF 搭建一个简单的模块化开发框架(四)异步调用WCF服务、WCF消息头添加安全验证Token
原文:Prism for WPF 搭建一个简单的模块化开发框架(四)异步调用WCF服务.WCF消息头添加安全验证Token 为什么选择wcf? 因为好像wcf和wpf就是哥俩,,, 为什么选择异步 ...
- WPF异步调用WCF服务
wpf调用wcf时,第一次访问总耗时到达几秒,影响界面的用户体验,因此在wpf加载界面和加载数据时采用异步加载,即异步访问wcf服务, 由于是否采用异步加载和服务端无关,仅仅由客户端自己根据需要来选择 ...
- [Java123] JDBC and Multi-Threading 多线程编程学习笔记
项目实际需求:DB交互使用多线程实现 多线程编程基础:1.5 :( (假设总分10) 计划一个半月从头学习梳理Java多线程编程基础以及Oracle数据库交互相关的多线程实现 学习如何通过代码去验证 ...
随机推荐
- python--批量下载豆瓣图片之升级版本
周末下雨没法出门,刷刷豆瓣看看妹子,本想拿以前脚本下载点图片,结果发现运行失败,之前版本为<python--批量下载豆瓣图片>,报错HTTP Error 403: Forbidden,网上 ...
- H3c交换机配置端口镜像详情
端口镜像 需要将G0/0/1口的全部流量镜像到G0/0/2口,即G0/0/1为源端口,G0/0/2为目的端口. 配置步骤 1.进入配置模式:system-view: 2.创建本地镜像组:mirrori ...
- 《EntrePreneur》发刊词
I do not choose to be a common person. It is my right to be uncommon - if I can. I seek opportunity ...
- BZOJ CF388D. Fox and Perfect Sets [线性基 数位DP]
CF388D. Fox and Perfect Sets 题意:求最大元素\(le n\)的线性空间的个数 给神题跪了 orz 容易想到 每个线性基对应唯一的线性空间,我们可以统计满足条件的对应空间不 ...
- Burp_用户名密码爆破
burp 全称 Burp Suite, 是用于攻击web 应用程序的集成平台.它包含了许多工具,可以抓包可以爆破也可以扫描漏洞. 主要组件如下: Proxy--是一个拦截HTTP/S的代理服务器,作为 ...
- Nginx日志分析及脚本编写
在我们日常的运维中,当Nginx服务器正常运行后,我们会经常密切关注Nginx访问日志的相关情况,发现有异常的日志信息需要进行及时处理. 那今天我将跟大家一起来研究和分析Nginx日志,nginx默认 ...
- zabbix server总是stoped,找到此方法解决了问题
zabbix日志报错: One child process died (PID:8885,exitcode/signal:1). Exiting ... syncing history data... ...
- Swift iOS 日期操作:NSDate、NSDateFormatter
1.日期(NSDate) // 1.初始化 // 初始化一个当前时刻对象 var now = NSDate() // 初始化一个明天当前时刻对象 var tomorrow = NSDate(timeI ...
- css去除ios文本框默认圆角
css去除ios文本框默认圆角 input, textarea {-webkit-appearance: none;}
- CENTOS6.6下mysql5.6的源码安装
本文来自我的github pages博客http://galengao.github.io/ 即www.gaohuirong.cn 1.下载:当前mysql版本到了5.6.28 http://dev. ...