AerialForWindows.Updates.GithubReleaseProvider.DownloadReleasePackage C# (CSharp) Method

DownloadReleasePackage() public method

public DownloadReleasePackage ( ReleaseInfo releaseInfo, Action downloadProgressCallback, CancellationToken cancellationToken ) : Task
releaseInfo ReleaseInfo
downloadProgressCallback Action
cancellationToken System.Threading.CancellationToken
return Task
        public async Task<string> DownloadReleasePackage(ReleaseInfo releaseInfo, Action<int> downloadProgressCallback,
            CancellationToken cancellationToken) {
            var destination = Path.Combine(Path.GetTempPath(), releaseInfo.Filename);
            if (File.Exists(destination)) {
                File.Delete(destination);
                Thread.Sleep(100);
            }
            using (var webClient = new WebClient()) {
                webClient.Headers.Add("Accept", "application/octet-stream");
                if (downloadProgressCallback != null) {
                    webClient.DownloadProgressChanged += (sender, args) => downloadProgressCallback(args.ProgressPercentage);
                }
                cancellationToken.Register(webClient.CancelAsync);
                await webClient.DownloadFileTaskAsync(releaseInfo.DownloadUrl, destination);
            }
            return destination;
        }
    }