我有一個Windows控制檯客戶端,睡眠幾分鐘,然後喚醒它從Rest API請求新的更新。該請求生成一個響應,json數據涉及一個對象列表,每個對象由ID,描述,截圖作爲URL從API發送到客戶端。控制檯應用程序需要使用json響應,並且對於每個對象,它都會查找URL並嘗試下載與列表中每個對象關聯的相應圖像。代碼如下表示如何在T#中使用TPL實現異步文件下載#
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,我可以獲得業績嗎?怎麼做?
你的問題是自相矛盾的。你想要更多*性能*還是你想減少*資源使用*? – zaitsman
請記住,每個端點有一個默認連接限制,在控制檯應用程序中它是2個IIRC。這意味着你將永遠無法同時下載超過2個下載。請參閱:https://msdn.microsoft.com/en-us/library/system.net.servicepointmanager.defaultconnectionlimit(v=vs.110).aspx – rene
@rene在此問題中有一個答案顯示如何增加併發連接http://stackoverflow.com/questions/26206412/asynchronous-downloading-files-in-c-sharp – Alrehamy