多线程编程学习笔记——异步调用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数据库交互相关的多线程实现 学习如何通过代码去验证 ...
随机推荐
- 转 intValue()的用法
intValue()是java.lang.Number类的方法,Number是一个抽象类.Java中所有的数值类都继承它. 不单是Integer有intValue方法,Double,Long等都有此方 ...
- JavaScript算法实现排序
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title> ...
- jenkins插件安装与升级[三]
标签(linux): jenkins 笔者Q:972581034 交流群:605799367.有任何疑问可与笔者或加群交流 默认的插件 Folders Plugin OWASP Markup Form ...
- python脚本检查TCP端口是否正常
#!/usr/bin/python import socket import re import sys def check_server(address,port): s = socket.sock ...
- 使用CefSharp开发一个12306“安心刷票弹窗通知”工具
有需求就要改进 最近两年没有在春节回家过年了,主要是票太难买,虽然之前写了一个12306“无声购票弹窗”工具,解决了抢票问题,但是全家老小一起回去还是很累,干脆就在北京过年了.这两天突然有一个朋友问我 ...
- 理解SSL/TLS协议
理解SSL/TLS协议 背景 早期我们在访问web时使用HTTP协议,该协议在传输数据时使用明文传输,明文传输带来了以下风险: 1.信息窃听风险,第三方可以获取通信内容 2.信息篡改风险,第三方可以篡 ...
- jQuery应用操作之---网页选项卡(tabs)
示例: <div class="tab"> <div class="tab_menu"> <ul> <li class ...
- 初识RESTful
前言:两个月没写博客了,我真是太贱了哈哈.先简单说下我这两个月做了啥吧.8月26号从BIGO离职,回学校准备秋招.9月初时才发现已经错过秋招内推时间,其实秋招内推拿offer是有较大概率的.9月才开始 ...
- java windows自动化-mail自动发邮件
本文旨在让测试人员了解如何发邮件 发邮件的话,最简单的事是直接手动发邮件,但是在自动化测试中,应做到让机器或者代码来自动发送邮件,笔者大概了解以下几种方法,总有一款口味适合你:1java代码来做下面即 ...
- [Python Study Notes]文件操作
文件操作 对文件操作流程 打开文件,可添加filepath打开某绝对路径下的文件,得到文件句柄并赋值给一个变量 通过句柄对文件进行操作 关闭文件 # The_author = 'liu66' # -* ...