我有一个Windows控制台客户端,它会休眠几分钟,然后唤醒并从Rest API请求新的更新。该请求生成包含JSON数据的响应,其中涉及一系列对象,每个对象由ID、描述和屏幕截图组成,并作为URL从API发送到客户端。要求控制台应用程序消耗JSON响应,并针对列表中的每个对象查找URL并尝试下载与每个对象关联的相应图像。代码表达如下:
foreach (var jobject in response)
{
Console.WriteLine(jobject.id);
Console.WriteLine(jobject.description);
if (jobject.shotUrl != null)
{
WebClient webclient = new WebClient();
webclient.DownloadFileAsync(new System.Uri(jobject.shotUrl), "F:\\" + jobject.id + ".jpg");
}
}
有时候可能会有大约500个JSON对象,这意味着需要下载500张照片...这又意味着创建500个Web客户端。我觉得这不是一个好主意。
我的问题是:如果依靠TPL,我能获得更好的性能吗?如何做到?
System.Net.HttpClient
而不是System.Net.WebClient
/System.Net.HttpWebRequest
,则并发连接限制和类似的 API 不适用。 - yaakov