async/await 异步编程

  C#异步编程的含义是一个异步过程调用发出后,调用者不能立刻得到结果。基于事件机制,实际处理这个调用的部件在完成后,通过状态、通知和回调来通知调用者。比如,你现在要有一批数据要大数据要入库,你又不想一边入库一边等待返回结果,你可以用异步,将大数据推入一个队列,然后另外一个线程来操作这个队列里面的数据入库,入完了,就通知一下主线程。这段时间你的主线程可以做任何事。

.NET 的类库支持BeginXXX和EndXXX方法来进行异步编程。 异步编写模型是一种模式,该模式允许用更少的线程去做更多的操作,.NET Framework很多类也实现了该模式,同时我们也可以自定义类来实现该模式,(也就是在自定义的类中实现返回类型为IAsyncResult接口的BeginXXX方法和EndXXX方法)。

C#5.0提供了async / await方式来进行异步编程。 该方式是基于任务的异步模式。下面是使用该方法实现异步调用天气API获取天气信息。

中国天气weather.com
http://m.weather.com.cn/data/101110101.html(六天预报)
http://www.weather.com.cn/data/sk/101110101.html(实时天气信息)

核心代码如下:

//提供用城市名获取天气信息方法  
     public static async Task<CityInfo> getCityInfoByNameAsync(string cityName)  
     {  
         //从xml获取id号;  
         string path = "c:\\documents\\visual studio 2013\\Projects\\WeatherForcast\\WeatherForcast\\Data\\cityList.xml";  
         XElement xe = XElement.Load(path);  
         var id = from a in xe.Elements("city")  
                  where a.Element("name").Value.Equals(cityName)  
                  select a.Element("id").Value;  
         string cityid = id.ElementAt(0);  
         return await getCityInfoByIdAsync(cityid);  
  
     }  







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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值