gpt4 book ai didi

c# - 如何在不停止的情况下在另一个异步方法中创建调用异步方法

转载 作者:行者123 更新时间:2023-11-30 13:38:29 24 4
gpt4 key购买 nike

我需要调用多个异步方法,并在其中调用另一个异步方法。让我演示一下

private async void button1_Click(object sender, EventArgs e)
{
for(int i = 0; i< 100; i++)
{
await Method1();
}
}

public async Task Method1()
{
await Task.Delay(3*1000);
await Method2();
}

public async Task Method2()
{
await Task.Delay(10*1000);
}

我的问题是,for 语句仅在等待 Method2 开始后才激活迭代,而我想要的是一次性创建 100 个任务。其他一切都将异步完成。

最佳答案

我认为您对“等待”的含义感到困惑。 “await”的意思是“开始异步处理这件事情,当它滴答作响时,回到windows消息循环并继续处理消息,以便UI不断重新绘制。当异步任务完成时,拿起我等待的代码”。

所以当你在这样的循环中await时,你是在说:

  • 开始第一个异步作业...
  • 并且在它运行时,继续处理消息循环。
  • 当第一个异步作业完成时...
  • 在我们等待的循环中接电话。我们绕着循环……
  • 开始第二个异步作业...

如果这不是您想要的,那么不要等待任务。如果您想启动一百个并发运行的任务,那么启动一百个任务并且不要等待它们中的任何一个。为什么点击处理程序中有 any await?

关于c# - 如何在不停止的情况下在另一个异步方法中创建调用异步方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16201826/

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