gpt4 book ai didi

c# - 并行处理一组 url 并返回一个 IEnumerable

转载 作者:行者123 更新时间:2023-11-30 20:03:35 26 4
gpt4 key购买 nike

我有一组用于抓取的 url,我想并行下载资源,同时返回一组强类型结果。

有一个 WebClient.DownloadString()和一个“MyTypedResult Process(string s)

如何将其包装起来以获得 string[] urls => IEnumerable<MyTypedResult>转换?

string[] urls = {"url1","url2","url3"};
List<MyTypedResult> ResultCollection = new List<MyTypedResult>();
foreach (var u in urls)
{
WebClient wc = new WebClient();
var content = wc.DownloadString(u);
MyTypedResult r = Process(content);
ResultCollection.Add(r);
}

我希望网络请求并行运行,但我需要一个列表中的结果集合;

最佳答案

您可以使用 .NET 4.5 中的新玩具 HttpClient 来并行获取结果:

var httpClient = new HttpClient();

var tasks = urls.Select(url => httpClient.GetStringAsync(url)
.ContinueWith(task =>
{
string response = task.Result;
return ConvertToStrongType(response);
}));

Task.WaitAll(tasks.ToArray());
var results = tasks.Select(t => t.Result);

关于c# - 并行处理一组 url 并返回一个 IEnumerable,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14747737/

26 4 0