public void InvokeAsync() { var progressChangeInfo = new ProgressChangeInfo(); webclient = new System.Net.WebClient(); sw.Start(); webclient.DownloadFileCompleted += (s, e) => { sw.Reset(); if (AsyncCompleted != null) { AsyncCompleted.Invoke(this, e); } }; webclient.DownloadProgressChanged += (s, e) => { string value = string.Format("{0} kb/s", (e.BytesReceived / 1024d / sw.Elapsed.TotalSeconds).ToString("0.00")); if (e.ProgressPercentage == 100) { sw.Reset(); } if (AsyncProgressChanged != null) { progressChangeInfo.Percentage = e.ProgressPercentage; progressChangeInfo.Speed = value; AsyncProgressChanged.Invoke(this, progressChangeInfo); } }; webclient.DownloadFileAsync(uri, filePath); }
/// <summary> /// Raises the AsyncProgressChanged event. /// </summary> /// <param name="e"></param> private void OnAsyncProgressChanged(ProgressEventArgs e) { AsyncProgressChanged?.Invoke(this, e); }