У меня есть создатель zip-файла, который принимает String[]
URL-адресов и возвращает zip-файл со всеми файлами в String[]
Я полагал, что будет несколько примеров этого, но я не могу найти ответ на вопрос «Как асинхронно загрузить много файлов и вернуться, когда закончите»
Как загрузить {n} файлов одновременно и вернуть словарь только после завершения всех загрузок?
private static Dictionary<string, byte[]> ReturnedFileData(IEnumerable<string> urlList)
{
var returnList = new Dictionary<string, byte[]>();
using (var client = new WebClient())
{
foreach (var url in urlList)
{
client.DownloadDataCompleted += (sender1, e1) => returnList.Add(GetFileNameFromUrlString(url), e1.Result);
client.DownloadDataAsync(new Uri(url));
}
}
return returnList;
}
private static string GetFileNameFromUrlString(string url)
{
var uri = new Uri(url);
return System.IO.Path.GetFileName(uri.LocalPath);
}