Eri*_*ing 1 .net c# async-await .net-core
当谈到 .NET 中的 async/await 东西时,我有点困惑......
考虑以下方法:
public async Task DoSomething() {
IEnumerable<Task> ts = GetSomeTasks(); // Some tasks that would do some random IO stuff, or whatever
await Task.WhenAll(ts);
Console.WriteLine("All tasks completed!");
}
Run Code Online (Sandbox Code Playgroud)
是否Console.WriteLine保证在ts等待任务之后执行调用?我想我见过这样的情况,在访问任务结果之前 await 似乎不会像那样“阻塞”。适用什么规则?
是否保证在等待 ts 中的任务后执行对 Console.WriteLine 的调用?
是的。
我想我见过这样的情况,在访问任务结果之前 await 似乎不会像那样“阻塞”。
不,事实并非如此。你只得到该语句的await操作(或潜在的未来表达后内声明,例如,用于(await a) + (await b)一旦这样被期待已久的事情已经完成。
请注意,Task.WhenAll它本身不是阻塞方法(与 不同Task.WaitAll) - 但它返回一个任务,该任务直到作为参数传递的所有任务都完成后才完成。
| 归档时间: |
|
| 查看次数: |
291 次 |
| 最近记录: |