SDownload.Framework.Streams.SCSetStream.Download C# (CSharp) Method

Download() public method

Downloads the necessary files
public Download ( bool ignoreExtras = false ) : Task
ignoreExtras bool Not used, extras aren't tracked by set
return Task
        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;
        }