{"id":7982,"date":"2022-09-11T06:59:44","date_gmt":"2022-09-11T01:29:44","guid":{"rendered":"https:\/\/jassweb.com\/solved\/solved-await-multiple-file-downloads-with-downloaddataasync\/"},"modified":"2022-09-11T06:59:44","modified_gmt":"2022-09-11T01:29:44","slug":"solved-await-multiple-file-downloads-with-downloaddataasync","status":"publish","type":"post","link":"https:\/\/jassweb.com\/solved\/solved-await-multiple-file-downloads-with-downloaddataasync\/","title":{"rendered":"[Solved] AWAIT multiple file downloads with DownloadDataAsync"},"content":{"rendered":"<p> [ad_1]<br \/>\n<\/p>\n<div id=\"answer-25371913\" class=\"answer js-answer accepted-answer js-accepted-answer\" data-answerid=\"25371913\" data-parentid=\"25371743\" data-score=\"6\" data-position-on-page=\"1\" data-highest-scored=\"1\" data-question-has-accepted-highest-score=\"1\" itemprop=\"acceptedAnswer\" itemscope itemtype=\"https:\/\/schema.org\/Answer\">\n<div class=\"post-layout\">\n<div class=\"votecell post-layout--left\"><\/div>\n<div class=\"answercell post-layout--right\">\n<div class=\"s-prose js-post-body\" itemprop=\"text\">\n<ul>\n<li>First, you tagged your question with <code>async-await<\/code> without actually using it. There really is no reason anymore to use the old asynchronous paradigms.  <\/li>\n<li>To wait <strong>asynchronously<\/strong> for all concurrent <code>async<\/code> operation to complete you should use <code>Task.WhenAll<\/code> which means that you need to keep all the tasks in some construct (i.e. dictionary) before actually extracting their results.<\/li>\n<li>At the end, when you have all the results in hand you just create the new result dictionary by parsing the <code>uri<\/code> into the file name, and extracting the result out of the <code>async<\/code> tasks.<\/li>\n<\/ul>\n<pre><code>async Task&lt;Dictionary&lt;string, byte[]&gt;&gt; ReturnFileData(IEnumerable&lt;string&gt; urls)\n{\n    var dictionary = urls.ToDictionary(\n        url =&gt; new Uri(url),\n        url =&gt; new WebClient().DownloadDataTaskAsync(url));\n\n    await Task.WhenAll(dictionary.Values);\n\n    return dictionary.ToDictionary(\n        pair =&gt; Path.GetFileName(pair.Key.LocalPath),\n        pair =&gt; pair.Value.Result);\n}\n<\/code><\/pre>\n<\/p><\/div>\n<div class=\"mt24\"><\/div>\n<\/div>\n<p>            <span class=\"d-none\" itemprop=\"commentCount\">5<\/span> <\/p><\/div>\n<\/div>\n<p>[ad_2]<\/p>\n<p>solved AWAIT multiple file downloads with DownloadDataAsync <\/p>\n","protected":false},"excerpt":{"rendered":"<p>[ad_1] First, you tagged your question with async-await without actually using it. There really is no reason anymore to use the old asynchronous paradigms. To wait asynchronously for all concurrent async operation to complete you should use Task.WhenAll which means that you need to keep all the tasks in some construct (i.e. dictionary) before actually &#8230; <a title=\"[Solved] AWAIT multiple file downloads with DownloadDataAsync\" class=\"read-more\" href=\"https:\/\/jassweb.com\/solved\/solved-await-multiple-file-downloads-with-downloaddataasync\/\" aria-label=\"More on [Solved] AWAIT multiple file downloads with DownloadDataAsync\">Read more<\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[320],"tags":[352,1144,324,2246],"class_list":["post-7982","post","type-post","status-publish","format-standard","hentry","category-solved","tag-net","tag-async-await","tag-c","tag-webclient"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v26.5 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>[Solved] AWAIT multiple file downloads with DownloadDataAsync - JassWeb<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/jassweb.com\/solved\/solved-await-multiple-file-downloads-with-downloaddataasync\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"[Solved] AWAIT multiple file downloads with DownloadDataAsync - JassWeb\" \/>\n<meta property=\"og:description\" content=\"[ad_1] First, you tagged your question with async-await without actually using it. There really is no reason anymore to use the old asynchronous paradigms. To wait asynchronously for all concurrent async operation to complete you should use Task.WhenAll which means that you need to keep all the tasks in some construct (i.e. dictionary) before actually ... Read more\" \/>\n<meta property=\"og:url\" content=\"https:\/\/jassweb.com\/solved\/solved-await-multiple-file-downloads-with-downloaddataasync\/\" \/>\n<meta property=\"og:site_name\" content=\"JassWeb\" \/>\n<meta property=\"article:published_time\" content=\"2022-09-11T01:29:44+00:00\" \/>\n<meta name=\"author\" content=\"Kirat\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Kirat\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"1 minute\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/jassweb.com\/solved\/solved-await-multiple-file-downloads-with-downloaddataasync\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/jassweb.com\/solved\/solved-await-multiple-file-downloads-with-downloaddataasync\/\"},\"author\":{\"name\":\"Kirat\",\"@id\":\"https:\/\/jassweb.com\/solved\/#\/schema\/person\/65c9c7b7958150c0dc8371fa35dd7c31\"},\"headline\":\"[Solved] AWAIT multiple file downloads with DownloadDataAsync\",\"datePublished\":\"2022-09-11T01:29:44+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/jassweb.com\/solved\/solved-await-multiple-file-downloads-with-downloaddataasync\/\"},\"wordCount\":104,\"publisher\":{\"@id\":\"https:\/\/jassweb.com\/solved\/#organization\"},\"keywords\":[\".net\",\"async-await\",\"c++\",\"webclient\"],\"articleSection\":[\"Solved\"],\"inLanguage\":\"en-US\"},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/jassweb.com\/solved\/solved-await-multiple-file-downloads-with-downloaddataasync\/\",\"url\":\"https:\/\/jassweb.com\/solved\/solved-await-multiple-file-downloads-with-downloaddataasync\/\",\"name\":\"[Solved] AWAIT multiple file downloads with DownloadDataAsync - JassWeb\",\"isPartOf\":{\"@id\":\"https:\/\/jassweb.com\/solved\/#website\"},\"datePublished\":\"2022-09-11T01:29:44+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/jassweb.com\/solved\/solved-await-multiple-file-downloads-with-downloaddataasync\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/jassweb.com\/solved\/solved-await-multiple-file-downloads-with-downloaddataasync\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/jassweb.com\/solved\/solved-await-multiple-file-downloads-with-downloaddataasync\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/jassweb.com\/solved\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"[Solved] AWAIT multiple file downloads with DownloadDataAsync\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/jassweb.com\/solved\/#website\",\"url\":\"https:\/\/jassweb.com\/solved\/\",\"name\":\"JassWeb\",\"description\":\"Build High-quality Websites\",\"publisher\":{\"@id\":\"https:\/\/jassweb.com\/solved\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/jassweb.com\/solved\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/jassweb.com\/solved\/#organization\",\"name\":\"Jass Web\",\"url\":\"https:\/\/jassweb.com\/solved\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/jassweb.com\/solved\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/jassweb.com\/wp-content\/uploads\/2021\/02\/jass-website-logo-1.png\",\"contentUrl\":\"https:\/\/jassweb.com\/wp-content\/uploads\/2021\/02\/jass-website-logo-1.png\",\"width\":693,\"height\":132,\"caption\":\"Jass Web\"},\"image\":{\"@id\":\"https:\/\/jassweb.com\/solved\/#\/schema\/logo\/image\/\"}},{\"@type\":\"Person\",\"@id\":\"https:\/\/jassweb.com\/solved\/#\/schema\/person\/65c9c7b7958150c0dc8371fa35dd7c31\",\"name\":\"Kirat\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/jassweb.com\/solved\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/jassweb.com\/solved\/wp-content\/litespeed\/avatar\/1261af3c9451399fa1336d28b98ea3bb.jpg?ver=1775798750\",\"contentUrl\":\"https:\/\/jassweb.com\/solved\/wp-content\/litespeed\/avatar\/1261af3c9451399fa1336d28b98ea3bb.jpg?ver=1775798750\",\"caption\":\"Kirat\"},\"sameAs\":[\"http:\/\/jassweb.com\"],\"url\":\"https:\/\/jassweb.com\/solved\/author\/jaspritsinghghumangmail-com\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"[Solved] AWAIT multiple file downloads with DownloadDataAsync - JassWeb","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/jassweb.com\/solved\/solved-await-multiple-file-downloads-with-downloaddataasync\/","og_locale":"en_US","og_type":"article","og_title":"[Solved] AWAIT multiple file downloads with DownloadDataAsync - JassWeb","og_description":"[ad_1] First, you tagged your question with async-await without actually using it. There really is no reason anymore to use the old asynchronous paradigms. To wait asynchronously for all concurrent async operation to complete you should use Task.WhenAll which means that you need to keep all the tasks in some construct (i.e. dictionary) before actually ... Read more","og_url":"https:\/\/jassweb.com\/solved\/solved-await-multiple-file-downloads-with-downloaddataasync\/","og_site_name":"JassWeb","article_published_time":"2022-09-11T01:29:44+00:00","author":"Kirat","twitter_card":"summary_large_image","twitter_misc":{"Written by":"Kirat","Est. reading time":"1 minute"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/jassweb.com\/solved\/solved-await-multiple-file-downloads-with-downloaddataasync\/#article","isPartOf":{"@id":"https:\/\/jassweb.com\/solved\/solved-await-multiple-file-downloads-with-downloaddataasync\/"},"author":{"name":"Kirat","@id":"https:\/\/jassweb.com\/solved\/#\/schema\/person\/65c9c7b7958150c0dc8371fa35dd7c31"},"headline":"[Solved] AWAIT multiple file downloads with DownloadDataAsync","datePublished":"2022-09-11T01:29:44+00:00","mainEntityOfPage":{"@id":"https:\/\/jassweb.com\/solved\/solved-await-multiple-file-downloads-with-downloaddataasync\/"},"wordCount":104,"publisher":{"@id":"https:\/\/jassweb.com\/solved\/#organization"},"keywords":[".net","async-await","c++","webclient"],"articleSection":["Solved"],"inLanguage":"en-US"},{"@type":"WebPage","@id":"https:\/\/jassweb.com\/solved\/solved-await-multiple-file-downloads-with-downloaddataasync\/","url":"https:\/\/jassweb.com\/solved\/solved-await-multiple-file-downloads-with-downloaddataasync\/","name":"[Solved] AWAIT multiple file downloads with DownloadDataAsync - JassWeb","isPartOf":{"@id":"https:\/\/jassweb.com\/solved\/#website"},"datePublished":"2022-09-11T01:29:44+00:00","breadcrumb":{"@id":"https:\/\/jassweb.com\/solved\/solved-await-multiple-file-downloads-with-downloaddataasync\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/jassweb.com\/solved\/solved-await-multiple-file-downloads-with-downloaddataasync\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/jassweb.com\/solved\/solved-await-multiple-file-downloads-with-downloaddataasync\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/jassweb.com\/solved\/"},{"@type":"ListItem","position":2,"name":"[Solved] AWAIT multiple file downloads with DownloadDataAsync"}]},{"@type":"WebSite","@id":"https:\/\/jassweb.com\/solved\/#website","url":"https:\/\/jassweb.com\/solved\/","name":"JassWeb","description":"Build High-quality Websites","publisher":{"@id":"https:\/\/jassweb.com\/solved\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/jassweb.com\/solved\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/jassweb.com\/solved\/#organization","name":"Jass Web","url":"https:\/\/jassweb.com\/solved\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/jassweb.com\/solved\/#\/schema\/logo\/image\/","url":"https:\/\/jassweb.com\/wp-content\/uploads\/2021\/02\/jass-website-logo-1.png","contentUrl":"https:\/\/jassweb.com\/wp-content\/uploads\/2021\/02\/jass-website-logo-1.png","width":693,"height":132,"caption":"Jass Web"},"image":{"@id":"https:\/\/jassweb.com\/solved\/#\/schema\/logo\/image\/"}},{"@type":"Person","@id":"https:\/\/jassweb.com\/solved\/#\/schema\/person\/65c9c7b7958150c0dc8371fa35dd7c31","name":"Kirat","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/jassweb.com\/solved\/#\/schema\/person\/image\/","url":"https:\/\/jassweb.com\/solved\/wp-content\/litespeed\/avatar\/1261af3c9451399fa1336d28b98ea3bb.jpg?ver=1775798750","contentUrl":"https:\/\/jassweb.com\/solved\/wp-content\/litespeed\/avatar\/1261af3c9451399fa1336d28b98ea3bb.jpg?ver=1775798750","caption":"Kirat"},"sameAs":["http:\/\/jassweb.com"],"url":"https:\/\/jassweb.com\/solved\/author\/jaspritsinghghumangmail-com\/"}]}},"_links":{"self":[{"href":"https:\/\/jassweb.com\/solved\/wp-json\/wp\/v2\/posts\/7982","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/jassweb.com\/solved\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/jassweb.com\/solved\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/jassweb.com\/solved\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/jassweb.com\/solved\/wp-json\/wp\/v2\/comments?post=7982"}],"version-history":[{"count":0,"href":"https:\/\/jassweb.com\/solved\/wp-json\/wp\/v2\/posts\/7982\/revisions"}],"wp:attachment":[{"href":"https:\/\/jassweb.com\/solved\/wp-json\/wp\/v2\/media?parent=7982"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/jassweb.com\/solved\/wp-json\/wp\/v2\/categories?post=7982"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/jassweb.com\/solved\/wp-json\/wp\/v2\/tags?post=7982"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}