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);  
  
     }  







阅读更多
文章标签: 大数据 .net c#
个人分类: 操作系统
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

关闭
关闭
关闭