HTML5技术

C#与C++的发展历程第三 - C#5.0异步编程巅峰 - hystar(12)

字号+ 作者:H5之家 来源:博客园 2016-01-15 10:03 我要评论( )

和取消机制一样,新版的.NET也为进度通知提供了内置类型的支持。IProgressT和ProgressT就是为此而生。类型中的泛型参数T表示Progress的ProgressChanged事件订阅的处理函数的第二个参数的类型。扩展之前的例子,把它

和取消机制一样,新版的.NET也为进度通知提供了内置类型的支持。IProgress<T>和Progress<T>就是为此而生。类型中的泛型参数T表示Progress的ProgressChanged事件订阅的处理函数的第二个参数的类型。扩展之前的例子,把它改成支持进度报告的方法:

class Program {     static void Main(string[] args)     {         var progress = new Progress<int>();         progress.ProgressChanged += ( s, e ) =>              {                 //e就是int类型的进度,可以使用各种方式进行展示。             };         var userService = new Service();         var avatar = userService.GetUserAvatarAsync(1,progress).Result;         tokenSource.Cancel();         Console.Read();     } } public class Service {     private readonly Repository _repository;     private readonly WebHepler _webHelpler;     public Service()     {         _repository = new Repository();         _webHelpler = new WebHepler();     }     public async Task<byte[]> GetUserAvatarAsync(int id, IProgress<int> progress)     {         var user = await _repository.GetByIdAsync(id, progress);//progress可以进一步传递,但注意进度值要在合理范围内         var email = user.Email;         progress.Report(50);//报告进度         var avatar = await _webHelpler.GetAvatarByEmailAsync(email, progress);         progress.Report(100);         return avatar;     } }

可以看到在async异步模式下取消和进度都很容易使用。

 

以上介绍了拥有async/await支持的TAP异步编程。在编写新的异步代码时应该优先选用TAP模型,而且新版的.NET库几乎给所有同步接口增加了这种可以通过async/await使用的异步接口。但往往项目中会存在一些使用APM或EAP模式的代码,通过下面介绍的一些方法可以使用async/await的方式调用这些代码。

 

1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。

相关文章
  • 2年前端学习历程,与找不到工作的悲愤与吐槽!(100%真实经历,看博主怎么一步步走向失业) - 蒋启钲

    2年前端学习历程,与找不到工作的悲愤与吐槽!(100%真实经历,看博

    2017-03-29 11:00

  • 开源第三方登录组件OAuthLogin2.0 支持QQ,阿里巴巴,淘宝,京东,蘑菇街,有赞等平台 - 大壮他哥

    开源第三方登录组件OAuthLogin2.0 支持QQ,阿里巴巴,淘宝,京东,蘑菇街

    2017-01-20 15:00

  • 从零到百亿互联网金融架构发展史 - 纯洁的微笑

    从零到百亿互联网金融架构发展史 - 纯洁的微笑

    2017-01-14 13:00

  • 记一次企业级爬虫系统升级改造(四):爬取微信公众号文章(通过搜狗与新榜等第三方平台) - 彩色铅笔

    记一次企业级爬虫系统升级改造(四):爬取微信公众号文章(通过搜狗

    2017-01-12 10:01

网友点评
r