您的位置:首页 > 编程语言

async/await 异步编程

2014-06-24 23:39 316 查看
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);

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: