码迷,mamicode.com
首页 > Web开发 > 详细

.NET Async/Await 最佳实践

时间:2014-12-04 11:39:34      阅读:221      评论:0      收藏:0      [点我收藏+]

标签:http   io   ar   os   使用   sp   strong   on   数据   

.NET 异步编程Guildlines

名称 描述 例外
Avoid async void Prefer async Task methods over async void methods Event handlers
Async all the way Don’t mix blocking and async code Console main method
Configure context Use ConfigureAwait(false) when you can Methods that require con­text

 

常见异步编程问题解决方案

问题 方案
创建任务执行代码 使用Task.Run或TaskFactory.StartNew(不new一个Task或Task.Start)
创建一个对操作或事件的任务包装 使用TaskFactory.FromAsync或TaskCompletionSource<T>
支持协作式取消任务 CancellationTokenSource 或 CancellationToken
报告进度 IProgress<T> 或 Progress<T>
处理数据流 TPL Dataflow 或 Reactive Extensions
共享资源的同步访问 信号量(SemaphoreSlim)
异常初始化资源 AsyncLazy<T>
支持以异步的生产者/消费者结构 TPL Dataflow or AsyncCollection<T>

 

参考: http://msdn.microsoft.com/en-us/magazine/jj991977.aspx

.NET Async/Await 最佳实践

标签:http   io   ar   os   使用   sp   strong   on   数据   

原文地址:http://www.cnblogs.com/jmax/p/4142235.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!