gpt4 book ai didi

c# - 任务列表 C#

转载 作者:行者123 更新时间:2023-11-30 21:59:46 28 4
gpt4 key购买 nike

var tasks = new List<Task>();

for (int i = 0; i < pageCount; i++)
{
var task = Task.Run(() =>
{
worker.GetHouses(currentPage);
});

tasks.Add(task);
currentPage++;
}

Task.WaitAll(tasks.ToArray());

有些东西我不明白。

每当我使用:

var tasks = new[]
{
Task.Run(() => {worker.GetHouses(1);}),
Task.Run(() => {worker.GetHouses(2);}),
Task.Run(() => {worker.GetHouses(3);})
};

然后我遍历该数组,得到的结果非常好。 (当使用 Task.WaitAll(tasks)

当我使用:

var tasks = new List<Task>();

我的 Task.WaitAll(tasks.toArray()) 似乎不起作用,我的任务“Status”停留在“RanToCompletion”

我做错了什么?

最佳答案

currentPage 变量存在同步问题。还创建带有结果的任务。

解决方法:

var tasks = new List<Task<List<House>>>();

for (int i = 0; i < pageCount; i++)
{
var currentPageCopy = currentPage;
var task = Task.Run(() =>
{
return worker.GetHouses(currentPageCopy);
});

tasks.Add(task);
currentPage++;
}

Task.WaitAll(tasks.ToArray());

您的代码的问题在于,所有 GetHouses 调用都将使用 currentPage + pageCount - 1 调用,因为最后一个值将用于所有方法调用...

关于c# - 任务列表 C#,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29021814/

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