public override async Task<bool> Download(bool ignoreExtras = false)
{
// Start the download for each track
_downloads = _downloads.ToDictionary(d => d.Key, d => d.Key.Download());
IList<SCTrackStream> failedDownloads = new List<SCTrackStream>();
// Wait for each task and count the amount of failures
// ReSharper disable LoopCanBeConvertedToQuery
foreach (var pair in _downloads)
{
try
{
if (!(await pair.Value))
failedDownloads.Add(pair.Key);
}
catch (Exception)
{
failedDownloads.Add(pair.Key);
}
}
// ReSharper restore LoopCanBeConvertedToQuery
foreach (var failure in failedDownloads)
_downloads.Remove(failure);
_failed = failedDownloads.Count;
// Return true if one or more was successful so it can be finished
return _downloads.Count > 0;
}