private void RetryDownloads(IEnumerable <DownloadOperation> downloads)
        {
            BackgroundDownloader downloader = CompletionGroupTask.CreateBackgroundDownloader();

            foreach (DownloadOperation download in downloads)
            {
                DownloadOperation        download1 = downloader.CreateDownload(download.RequestedUri, download.ResultFile);
                Task <DownloadOperation> startTask = download1.StartAsync().AsTask();
            }

            downloader.CompletionGroup.Enable();
        }
        private async Task RetryDownloadsAsync(IEnumerable <DownloadOperation> downloadsToRetry)
        {
            BackgroundDownloader downloader = CompletionGroupTask.CreateBackgroundDownloader();

            foreach (DownloadOperation downloadToRetry in downloadsToRetry)
            {
                // Retry with the same uri, but save to a different file name.
                string originalName = downloadToRetry.ResultFile.Name;
                string newName      = originalName.Insert(originalName.LastIndexOf('.'), "_retried");
                await downloadToRetry.ResultFile.RenameAsync(newName, NameCollisionOption.ReplaceExisting);

                DownloadOperation download = downloader.CreateDownload(downloadToRetry.RequestedUri, downloadToRetry.ResultFile);

                // We do not await on background transfer asynchronous tasks, since await will only
                // finish after the entire transfer is complete, which may take a very long time.
                // The completion of these downloads will be handled by a future CompletionGroupTask instance.
                Task <DownloadOperation> startTask = download.StartAsync().AsTask();
            }

            downloader.CompletionGroup.Enable();
        }