c# – 多个等待操作或只有一个
我已经看到了如何实现await关键字以及它创建的结果.我想我对它有一个基本的了解.但是,是
public async Task DoWork() { await this.Operation1Async(); await this.Operation2Async(); await this.Operation3Async(); } “更好”(一般来说)或 public async Task DoWork() { await this.Operation1Async(); this.Operation2(); this.Operation3(); } 第一种方法的问题是它为每个等待调用创建一个新任务?这需要一个新线程? 而第一个在第一个等待时创建一个新任务,然后在新任务中处理那里的所有内容? 编辑 while (await reader.ReadAsync()) { //... } await reader.NextResultAsync(); // ... 这不是创造两个任务吗?一个在主线程中使用第一个ReadAsync,然后在这个新创建的任务中使用NextResultAsync执行另一个任务.我的问题是第二项任务真的需要,不是 while (await reader.ReadAsync()) { //... } reader.NextResult(); // ... 解决方法
是的,不是.是的,它正在为每个异步方法创建一个Task;异步状态机将创建一个.但是,这些任务不是线程,也不是在线程上运行.他们不会在任何地方“奔跑”. 您可能会发现我的一些博客文章很有用: >
一点也不.任务只完成一次,并且该方法将不会继续等待该任务完成.因此,在调用Operation2之前,Operation1Async返回的任务已经完成. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |