首页 > 代码库 > .NET Async/Await 最佳实践
.NET Async/Await 最佳实践
.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 context |
常见异步编程问题解决方案
问题 | 方案 |
创建任务执行代码 | 使用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 最佳实践
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。