gpt4 book ai didi

c# - 控制台应用程序中的正确异步循环

转载 作者:太空宇宙 更新时间:2023-11-03 20:54:26 27 4
gpt4 key购买 nike

我知道异步 I/O 不会带来并行性,但我认为当应用程序等待异步操作时,它可以继续做其他事情。

考虑下面的代码,我希望循环在等待 Wait(i) 的同时继续进行,但显然我错了,每次迭代都是阻塞的。在这里实现某种并发的正确方法是什么?

using System;
using System.Threading.Tasks;

namespace asynctest
{
class Program
{
static void Main(string[] args)
{
Do().GetAwaiter().GetResult();
}

public static async Task Do()
{
for(int i=0;i<10;i++)
{
await Wait(i);
}
}

public static async Task Wait(int i)
{
await Task.Delay(10000);
}
}
}

最佳答案

public static async Task Do()
{
var tasks = new Task[10];
for (int i = 0; i < 10; i++)
{
tasks[i] = Wait(i);
}

await Task.WhenAll(tasks);
}

关于c# - 控制台应用程序中的正确异步循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52034430/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com