通过.NET客户端异步调用Web API(C#)
2024-08-29 03:51:19
在学习Web API的基础课程 Calling a Web API From a .NET Client (C#) 中,作者介绍了如何客户端调用WEB API,并给了示例代码。
但是,那些代码并不是非阻塞调用,作者还说下一章节会介绍异步调用这些方法的正确方法(I'll show the correct way to invoke those methods asynchronously).
可是我再也没找到下文……
这里有篇参考译文:http://www.cnblogs.com/r01cn/archive/2012/11/20/2779011.html
但是楼主也没有回答楼下小伙伴的问题——异步非阻塞调用webapi(后来我给回答了,(*^__^*) 嘻嘻……)
基于以上原因,我在这里做个demo
其实就是将原文中的代码:(参考代码,仅作说明)
class Program
{
static void Main()
{
RunAsync().Wait();
} static async Task RunAsync()
{
using (var client = new HttpClient())
{
// TODO - Send HTTP requests
}
}
}
改为如下:
class Program
{
static void Main()
{
RunAsync();
} static async RunAsync()
{
using (var client = new HttpClient())
{
// TODO - Send HTTP requests
}
}
}
即不返回Tast了。
那阻塞跟非阻塞的区别在哪呢?
HttpResponseMessage response = await client.GetAsync("api/products/2");//非阻塞
//HttpResponseMessage response = client.GetAsync("api/products/2").Result; //阻塞
通过上面的代码可以看出:采用Result属性的过程是线程阻塞的。
最新文章
- LeetCode:3Sum_15
- 避坑宝典:如何选择HTML5游戏引擎
- 控件(文本类): TextBlock
- jQuery ajax同步的替换方法,使用 $.Deferred()对象
- css部分的复习
- Skyline TerraExplorer Pro(等ActiveX控件)在Google Chrome浏览器的运行方法
- SqlServer里DateTime转字符串
- 微信小程序大全(下)(最新整理 建议收藏)
- Linux入门之常用命令(12)用户管理
- intellij IDEA配置Tomcat
- 【从零开始自制CPU之学习篇05】总线
- Java就业班day09_xml&;tomcat
- Android利用Intent与其他应用交互
- RestTemplate 服务名请求
- handlebars.js 自定义helper(过滤)
- Java多线程:CAS与java.util.concurrent.atomic
- CentOS7(linux) 通过服务名查询安装目录
- KADEMLIA算法学习
- 《编程之美》practice
- python 将元组解析为多个参数
热门文章
- java线程一之创建线程、线程池以及多线程运行时间统计
- Android中Parcelabel对象的使用和理解
- MFC动态创建控件及其消息响应函数
- PHP连接Redis操作函数
- oracle的SQL语句中的(+)是干什么用的?
- Ehcache概念篇
- ErrorUnable to tunnel through proxy. Proxy returns HTTP1.1 400 Bad Reques
- Qt快速入门学习笔记(画图篇)
- 【bzoj4229】选择 离线+LCT
- 【bzoj3142】[Hnoi2013]数列 数学