加载时异步下载json文件:同步



在加载应用程序时,我需要下载3个小于200kb的小json文件。我有三种类似的方法:

private static async Task<bool> DownloadOne()
{
using (var tokSource = new CancellationTokenSource(5000))
{
try
{
_httpClient.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
var zurl = "URL");
var response = await _httpClient.GetAsync(zurl, tokSource.Token);
using (var stream = await response.Content.ReadAsStreamAsync())
{
ar localFolder = System.Environment.GetFolderPath(System.Environment.SpecialFolder.LocalApplicationData);
var newpath = Path.Combine(localFolder, "one.json");
var fileInfo = new FileInfo(newpath);
using (var fileStream = fileInfo.OpenWrite())
{
await stream.CopyToAsync(fileStream);
}
}
}
catch (OperationCanceledException)
{
return false;
}
catch (Exception e)
{
return false;
}               
}
return true;
}

它是不是比同时做更快速的方法?

await DownloadOne();
await DownloadTwo();
await DownloadThr();

是的。您正在等待下载每个文件,然后再开始下载下一个文件。相反,您可以并行运行所有任务,并等待它们完成任务。WhenAll((:

var tasks = new Task[]{DownloadOne(), DownloadTwo(), DownloadThr()};
await Task.WhenAll(tasks);

最新更新