gpt4 book ai didi

c# - 不减慢任务循环,并知道何时返回结果

转载 作者:行者123 更新时间:2023-12-02 22:14:32 24 4
gpt4 key购买 nike

Task<string> RunList(int client)
{
return pages[client];
}

private async void Form1_DoubleClick(object sender, EventArgs e)
{
for (int x = 0; x < listBox1.Items.Count; x++)
{
RunList(x);
}
}

这将飞过任务循环,但您如何知道结果何时全部进入而不影响循环速度?

最佳答案

您可以await WhenAll 的结果,以确保所有任务都已在代码中的那个点完成。 (重要的是不要在这里使用 WaitAll,那会阻塞 UI 线程。)

private async void Form1_DoubleClick(object sender, EventArgs e)
{
var tasks = new List<Task<string>>();
for (int x = 0; x < listBox1.Items.Count; x++)
{
tasks.Add(RunList(x));
}
await Task.WhenAll(tasks);
}

这里的基本思想是在对任务调用 await 之前简单地启动任务。这是一个只有两个任务的简单示例:

await Task.Delay(1000);
await Task.Delay(1000);

这将执行第一个任务,然后第二个任务。

var task1 =  Task.Delay(1000);
var task2 = Task.Delay(1000);

await task1;
await task2;

这将启动两个任务,然后在两个任务完成后继续,允许并发运行。

关于c# - 不减慢任务循环,并知道何时返回结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14717106/

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