public void WatchDownloadPercentage(IntPtr windowPointer, Task <bool> downloadTask) { double percent = 0.0; while (!downloadTask.IsCanceled && !downloadTask.IsCompleted && !downloadTask.IsFaulted) { percent = DownloadControl.GetInstance().PercentDownloaded; if (percent < 1.0 && !downloadTask.IsCompleted) { TaskbarUtils.SetTaskbarItemProgress(windowPointer, TaskbarProgressBarState.Normal, percent); } else if (!downloadTask.IsCompleted) { TaskbarUtils.SetTaskbarItemProgress(windowPointer, TaskbarProgressBarState.Indeterminate, 1.0); break; } } }
public Task <bool> DownloadVersionAsync(string downloadVersion, IntPtr windowPointer) { var downloadTask = Task.Factory.StartNew(new Func <bool>(() => { if (!string.IsNullOrWhiteSpace(downloadVersion)) { return(DownloadControl.GetInstance().DownloadVersion(downloadVersion)); } else { return(false); } })); downloadTask.Start(); var watchPercentageTask = Task.Factory.StartNew(new Action(() => WatchDownloadPercentage(windowPointer, downloadTask))); watchPercentageTask.Start(); return(downloadTask); }
private void StopDownloads() { DownloadControl.GetInstance().StopAllDownloads(); StartControl.GetInstance().StopAllDownloads(); }