C#5.0异步
Posted jingjingweixiao
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C#5.0异步相关的知识,希望对你有一定的参考价值。
异步编程
忘掉那些繁琐的异步编程模型吧!领略下C#5.0带来的便捷性
应用场景
当需要I/O绑定(例如从网络请求数据或访问数据库)
当使用CPU绑定代码(例如执行成本高昂的计算)
异步模型的概述
对于I/O绑定的代码,当你await一个操作,它将返回async方法中的一个Task或Task<T>
对于CPU绑定代码,当你await一个操作,它将在后台线程通过Task.Run方法启动
await关键字有这奇妙的作用,当你await一个操作,它控制执行await的方法的调用方,且最终允许UI具有响应性或服务具有灵活。
示例
I/O绑定情景下:
private readonly HttpClient _httpClient = new HttpClient(); downloadButton.Clicked+=async(o, e) => var stringData = await _httpClient.GetStringAsync(URL); DoSomethingWithData(stringData);
消耗CPU大量计算下:
private DamagResult CalculateDamageDone() //do lots of Calcute button.Click+= async(o, e) => var result = await Task.Run(() => CalculateDamageDone()); DisplayDamage(result);
备注:
async方法需在其主体中具有awat关键字,否则它们将永不暂停
async void 应仅用于事件处理程序
以上是关于C#5.0异步的主要内容,如果未能解决你的问题,请参考以下文章
C#C# 5.0 新特性——Async和Await使异步编程更简单
如何正确理解.NET 4.5和C#5.0中的async/await异步编程模式