// Implementation of IDownloadProgressChangedCallback interface... public void Invoke(IDownloadJob downloadJob, IDownloadProgressChangedCallbackArgs callbackArgs) { // !!! warning this function is invoced from a different thread !!! agent.mDispatcher.Invoke(new Action(() => { agent.OnProgress(downloadJob.Updates.Count, callbackArgs.Progress.PercentComplete, callbackArgs.Progress.CurrentUpdateIndex + 1, callbackArgs.Progress.CurrentUpdatePercentComplete, downloadJob.Updates[callbackArgs.Progress.CurrentUpdateIndex].Title); })); }
void IDownloadProgressChangedCallback.Invoke(IDownloadJob downloadJob, IDownloadProgressChangedCallbackArgs callbackArgs) { if (this.showProgress) { IDownloadProgress progress = callbackArgs.Progress; Console.WriteLine("WUA_DownloadingProgress:{0}|{1}|{2}", progress.CurrentUpdateIndex + 1, progress.CurrentUpdatePercentComplete, progress.PercentComplete); } }
//Download Progress callback void IDownloadProgressChangedCallback.Invoke(IDownloadJob downloadJob, IDownloadProgressChangedCallbackArgs callbackArgs) { try { DebugLog($"Download progress: {callbackArgs.Progress.PercentComplete}%; " + $"update {downloadJob.Updates[callbackArgs.Progress.CurrentUpdateIndex].Title}: {callbackArgs.Progress.CurrentUpdatePercentComplete}%"); DebugLog(Dump(callbackArgs.Progress)); ProgressChanged?.Invoke(callbackArgs.Progress.PercentComplete, downloadJob.Updates[callbackArgs.Progress.CurrentUpdateIndex].Title); } catch (Exception ex) { Log.Error("IDownloadProgressChangedCallback.Invoke", ex.ToString()); } }
// Implementation of IDownloadProgressChangedCallback interface... public void Invoke(IDownloadJob downloadJob, IDownloadProgressChangedCallbackArgs e) { decimal bDownloaded = ((e.Progress.TotalBytesDownloaded / 1024) / 1024); decimal bToDownloaded = ((e.Progress.TotalBytesToDownload / 1024) / 1024); bDownloaded = decimal.Round(bDownloaded, 2); bToDownloaded = decimal.Round(bToDownloaded, 2); form1.setTextBox1Notification("Downloading Update: " + e.Progress.CurrentUpdateIndex + "/" + downloadJob.Updates.Count + " - " + bDownloaded + "Mb" + " / " + bToDownloaded + "Mb"); }
/// <summary> /// Callback. Used by the windows update api when the download makes progress. Do not call this method. /// </summary> void Invoke(IDownloadJob downloadJob, IDownloadProgressChangedCallbackArgs callbackArgs) { bool doCallback = false; lock (JobLock) { if (Job != null && Job.InternalJobObject == downloadJob && !Job.IsCompleted) { StateDesc = downloadJob.Updates[callbackArgs.Progress.CurrentUpdateIndex].Title; doCallback = true; } } if (doCallback) // calling the callback inside the lock can lead to deadlocks when the callback tries to dispose this object { OnProgress(downloadJob.Updates[callbackArgs.Progress.CurrentUpdateIndex], callbackArgs.Progress.CurrentUpdateIndex, downloadJob.Updates.Count, callbackArgs.Progress.PercentComplete); } }
// Implementation of IDownloadProgressChangedCallback interface... public void Invoke(IDownloadJob downloadJob, IDownloadProgressChangedCallbackArgs e) { decimal downloaded = ((e.Progress.TotalBytesDownloaded / 1024) / 1024); decimal toDownloaded = ((e.Progress.TotalBytesToDownload / 1024) / 1024); downloaded = decimal.Round(downloaded, 2); toDownloaded = decimal.Round(toDownloaded, 2); form1.ShowProgressMessage("progress_download", "下载进度: " + e.Progress.CurrentUpdateIndex + "/" + downloadJob.Updates.Count + " - " + downloaded + "Mb" + " / " + toDownloaded + "Mb"); }
public void Invoke(IDownloadJob downloadJob, IDownloadProgressChangedCallbackArgs callbackArgs) { ServiceEventSource.Current.VerboseMessage("Callback: Downloading of Windows Updates is In-Progress. Percent completed : " + downloadJob.GetProgress().PercentComplete); }
public void Invoke(IDownloadJob downloadJob, IDownloadProgressChangedCallbackArgs callbackArgs) { this.Progress = callbackArgs.Progress; }
public void Invoke(IDownloadJob downloadJob, IDownloadProgressChangedCallbackArgs callbackArgs) { var clearProgressFlag = false; try { if (_updateInProgress) return; _updateInProgress = true; clearProgressFlag = true; var wrapper = new UpdateWrapper(downloadJob, callbackArgs); wrapper.AdjustValues(_lastWrapper); _lastWrapper = wrapper; SetTitle(wrapper); SetText(wrapper); } catch (Exception e) { Log.WarnFormat("An issue occurred while handling a download updates progress changed event: {0}", e); } finally { if (clearProgressFlag) _updateInProgress = false; } }
public UpdateWrapper(IDownloadJob job, IDownloadProgressChangedCallbackArgs args) { TotalUpdates = job.Updates.Count; TotalPercent = args.Progress.PercentComplete; CurrentIndex = args.Progress.CurrentUpdateIndex+1; Title = job.Updates[args.Progress.CurrentUpdateIndex].Title; UpdatePercent = args.Progress.CurrentUpdatePercentComplete; }
public void Invoke(IDownloadJob downloadJob, IDownloadProgressChangedCallbackArgs callbackArgs) => _state.Invoke(downloadJob, callbackArgs);
public void Invoke(IDownloadJob downloadJob, IDownloadProgressChangedCallbackArgs callbackArgs) => Action?.Invoke(callbackArgs.Progress);
public void Invoke(IDownloadJob downloadJob, IDownloadProgressChangedCallbackArgs e) { WindowsUpdateFrame.progressWindow.Dispatcher.BeginInvoke(new Action(() => WindowsUpdateFrame.progressWindow.progressBar1.Value = e.Progress.PercentComplete)); WindowsUpdateFrame.progressWindow.Dispatcher.BeginInvoke(new Action(() => WindowsUpdateFrame.progressWindow.textBlock1.Text = e.Progress.PercentComplete.ToString() + "%")); }