【发布时间】:2022-01-05 05:01:00
【问题描述】:
一次运行多个tasks 并将它们的返回值添加到c 语言列表中的最简单方法是什么? 我尝试了几种方法,但我可能做错了一切,因此我没有太多代码可以在这里发布。
更新:
这是我的失败尝试之一。我基本上是在尝试从链接中获取 JSON 字典(每个任务的链接都不同),然后将所有 JSON 字典添加到最后的单个列表中。但我希望所有任务同时运行。
static class Program
{
static void Main()
{
List<dynamic> writeList = new List<dynamic>();
for (int i = 0; i <= 50; i++)
{
Task<dynamic> task = Task<dynamic>.Factory.StartNew(
() => savePageData("www.someJsonlink.com"));
writeList.Add(task);
}
}
static dynamic savePageData(string url)
{
WebClient client = new WebClient();
string page = client.DownloadString(url);
var data = JsonConvert.DeserializeObject(page);
return data;
}
}
这种方法的问题是没有任何东西被添加到列表中。实际上也没有连接到链接。但是如果正常完成,数据是存在的。
【问题讨论】:
-
附带说明,而不是
Task<dynamic>.Factory.StartNew更可取:Task.Run。你可以阅读这两种方法的区别here。
标签: c# task task-parallel-library taskfactory