C#学习心得(二) 异步编程

         异步编程是指程序在执行异步操作时,无法马上获得结果,而在异步操作过程中,程序可以执行其他操作,当异步操作完成时,通过状态,通知,回调等来告知调用者。异步编程的好处是显而易见的,比如WEB应用,如果不是采用异步编程,那么当客户端向服务器发送请求时,在得到服务器响应的过程中,客户端都处于一种等待状况,用户无法对其进行相关的操作,这样的用户体验显然是非常差的。

        C#异步编程有3种实现方式,第一种是APM(Asynchromous  Programming  Model ),.net类库中的Beginxxx和Endxxx方法其实就实现了异步编程,当然用户也可以自定义实现异步操作的类,要求这个类实现返回类型为IAsyncResult的Beginxxx和Endxxx方法。

       第二种是 async  /  await  ,一下为教科书上的一段代码,

async	
  Task<int>	
  AccessTheWebAsync()	
   {		
  	HVpClient	client	 =	 new	 HVpClient();	

  	Task<string>	 getStringTask	 = client.GetStringAsync("hVp://msdn.microsod.com");	
  	
  	DoIndependentWork();	
	
  	string	  urlContents	  =	  await	  getStringTask;	
  	
  	return	urlContents.Length;	
   }

这种方式有一个问题需要特别注意,就是对于只标识async关键字的(指在方法内没有出现await关键字)的方法,调用线程会把 该方法当成同步方法一样执行,所以还是会堵塞GUI线程,只有当async和await关键字同时出现,该方 法才被转换为异步方法处理。


        第三种为HttpClient和WebClient,HttpWebRequest有一些区别:

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

 2、你通过一个单一的HttpClient实例,它有自己的连接池。    

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

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

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


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值