C#异步编程初体验

前言

其实不仅仅是C#编程,在计算机技术发展迅猛的今天,用户对程序响应速度的要求越来越高,彼时动不动就弹出“无法响应”框的程序早已不能满足用户体验,迟早会被时代所淘汰。本人接触过前端开发中的异步编程核心技术——Ajax,在某种程度上,Ajax与作为后端语言的C#的异步编程相比,核心思想基本一致。Ajax中,核心对象是XMLHttpRequest,该对象可以在不向服务器提交整个页面的情况下,实现局部更新网页(通过JavaScript与DOM)。当页面全部加载完毕后,客户端通过该对象向服务器请求数据,服务器接受数据并处理后,向客户端返回数据。


C#异步编程总览

1)Asynchromous Programming Model——异步编程模型

2)C# 5.0中引入的async/await

3) HttpClient


1)APM

异步编程模型这个模式,就是微软利用委托和线程池帮助开发者实现的一个模式,该模式利用一个线程池区执行一个操作,执行后会立即将控制权返回给调用线程,此时线程池会在后台进行这个异步操作;异步操作完成之后,通过回调函数来获取异步操作返回的结果。


举例说明

同步方法:

public override int Read(byte[]array,int offset,int count);

异步方法:public override IAsyncResult BeginRead(byte[] array,int offset, int numBytes, AsyncCallback userCallback, object stateObject);  

                    public override int EndRead(IAsyncResult asyncResult);  //结束异步操作


2)Async/Await

注意:有当async和await关键字同时出现,该方法才被转换为异步方法处理。

被async关键字标识的方法不会影响方法是同步还是异步运行并完成,而是,它使方法可被分割成多个片段,其中一些片段可能异步运行,这样这个方法可能异步完成。

在await关键字出现的前面部分代码和后面部分代码都是同步执行的。

await关键处的代码片段是在线程池线程上执行。

使用async和await关键字实现的异步方法,此时的异步方法被分成了多个代码片段去执行的,而不是像之前的异步编程模型(APM)和EAP那样,使用线程池线程去执行一整个方法。



3)HttpClient

HttpClient是接收HttpResponseMessages和发送HttpRequestMessages的主要类。

需注意

1.可在HttpClient实例上配置扩展,设置默认的头部,取消未完成的请求和更多的设置

2.可通过一个单一的HttpClient实例,且它有自己的连接池

3.HttpClients不与特定的HTTP服务器绑定,可以使用相同的HttpClient实例提交任何HTTP请求

4.可以用HttpClient为特定的站点创建特殊的Client

5.HttpClient采用新的型模式处理异步请求使它更容易管理和协调更多的请求

实例代码(Get方法):


实例代码(Post方法):











  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值