type
Post
status
Published
date
Sep 13, 2023
slug
c-sharp-async-continuation
summary
C#异步编程-18 异步和 continuation 以及语言的支持
tags
C#
CS
category
学习记录
icon
password
Property
Aug 9, 2024 11:59 AM
异步编程和Continuation
Task非常适合异步编程,因为他们支持Continuation(他对异步非常重要)
第16讲里面TaskContinuationSource的例子
TaskContinuationSource是底层实现IO-bound异步方法的一种标准方式
对于Compute-bound方法,Task.Run会初始化绑定线程的并发
把task返回调用者,创建异步方法
异步编程的区别:目标是在调用图较低的位置来这样做
富客户端应用中,高级方法可以保留在UI线程和访问控制以及共享状态上,不会出现线程安全问题
同步写法
有问题的版本
语言对异步的支持非常重要
需要对task 的执行序列化
例如Task B依赖于Task A的执行结果
为此,必须在continuation内部触发下一次循环
async 和await
对于不想负责的实现异步非常重要
命令式循环结构不要和continuation混合在一起,因为他们依赖于本地状态
另一种实现,函数式写法(Linq查询),他也是响应式编程(Rx)的基础
- 作者:Kitety
- 链接:https://www.kitety.com/article/c-sharp-async-continuation
- 声明:本文采用 CC BY-NC-SA 4.0 许可协议,转载请注明出处。
相关文章

.png?table=block&id=fa81f9ab-c0da-4f4e-a935-0567380c36d0&t=fa81f9ab-c0da-4f4e-a935-0567380c36d0&width=1080&cache=v2)

.png?table=block&id=55df38cd-a361-41ee-a75d-c17615e78d6b&t=55df38cd-a361-41ee-a75d-c17615e78d6b&width=1080&cache=v2)
.png?table=block&id=23baa6c3-e959-44c5-a699-ce0df9ba58ee&t=23baa6c3-e959-44c5-a699-ce0df9ba58ee&width=1080&cache=v2)
_(1).jpg?table=block&id=a716c7ee-7105-4a3f-8133-a15129086419&t=a716c7ee-7105-4a3f-8133-a15129086419&width=1080&cache=v2)
.jpg?table=block&id=2e9784d9-1d6e-44fc-9106-f0c576ddcb8f&t=2e9784d9-1d6e-44fc-9106-f0c576ddcb8f&width=1080&cache=v2)

.png?table=block&id=c0772cdb-ee08-49f4-b2f3-c804586bb769&t=c0772cdb-ee08-49f4-b2f3-c804586bb769&width=1080&cache=v2)

.png?table=block&id=b43ea4ae-a57d-4962-80ba-12280979702b&t=b43ea4ae-a57d-4962-80ba-12280979702b&width=1080&cache=v2)
