摘要: yield流式处理 1、每到一次return都会出来打印一次,源代码也是根据return个数分成若干状态机,适用于把大数据切割成小数据依次返回 static async Task Main(string[] args) { foreach (var item in YYY()) { Console. 阅读全文
posted @ 2023-01-31 23:58 long-livece 阅读(119) 评论(0) 推荐(0) 编辑
摘要: 异步任务队列 Task.WhenAll(List<Task>)等List中所有的异步任务完成后才算完成 Task.WhenAny(List<Task>)List中某个完成就完成 较常用的是Task.WhenAll(List<Task>) 不await去执行读取三个文件内容的异步操作,将它们都放到Ta 阅读全文
posted @ 2023-01-31 23:57 long-livece 阅读(34) 评论(0) 推荐(0) 编辑
摘要: 被多数异步方法都青睐的参数:请求限时-CancellationToken 当请求发出去后,即使客户端关闭但服务器会继续做处理,没必要,所以CancellationToken来取消处理。 可以使用在请求超时、用户取消请求、网页关闭、断网等场景 而且很多异步方法都支持CancellationToken参 阅读全文
posted @ 2023-01-31 23:56 long-livece 阅读(135) 评论(0) 推荐(0) 编辑
摘要: 1.我们看到有些异步方法源码内部未出现async,await的 之前我们就知道,当使用了async,await时,所有的await代码会被反编译成一个一个的状态机以及生产一个异步类,效率远不如普通方法。那么,什么样的异步方法无需async标记呢? 答案是这个异步方法中无需对其他的异步方法返回值进行处 阅读全文
posted @ 2023-01-31 23:53 long-livece 阅读(179) 评论(0) 推荐(0) 编辑
摘要: 1、遇到await,线程的变化 遇到await会把当前线程返回且返回值就是await后面的Task,再从线程池随机取一个线程往下执行代码。 我们使用封装好的异步方法模拟写入大量字符串的耗时操作: static async Task Main(string[] args) { //原线程 Consol 阅读全文
posted @ 2023-01-31 23:50 long-livece 阅读(376) 评论(0) 推荐(0) 编辑
摘要: 1、异步方法不await引发异常 向文件写入大量内容: 因为WriteAllTextAsync是独占式写入,又不等待,都没写完就到下一行读,肯定占用进程报错! 2、await 等待了一个非异步的方法 3、异步委托的async 需要添加asyne标记lambda Task.Run(async () = 阅读全文
posted @ 2023-01-31 23:46 long-livece 阅读(42) 评论(1) 推荐(0) 编辑
摘要: 1.介绍 同步就是服务员在你旁边等你点好菜,所以其他进来的人都要等你点完 异步就是服务员给所有进来的人一份菜单,大家都可以同时点 先让所有客人都可以点完餐,不让他们觉得被冷落,把所有菜单丢给后厨,忙的是后厨,不断的压榨后厨 2.本质 本质上不会缩短某个客人的上菜时间,只是同时接收所有人的请求,但是后 阅读全文
posted @ 2023-01-31 13:34 long-livece 阅读(97) 评论(0) 推荐(0) 编辑