protected virtual void OnDownloadProgressChanged(FileDownloadProgressChangedEventArgs e)
 {
     if (this.SynchronizingObject != null && this.SynchronizingObject.InvokeRequired)
     {
         //Marshal the call to the thread that owns the synchronizing object.
         this.SynchronizingObject.Invoke(new DownloadProgressChangedEventInvoker(OnDownloadProgressChanged), new object[] { e });
     }
     else
     {
         if (DownloadProgressChanged != null)
         {
             DownloadProgressChanged(this, e);
         }
     }
 }
 protected virtual void HttpDownloadFileProgress(object sender, FileDownloadProgressChangedEventArgs e)
 {
 }
        protected override void HttpDownloadFileProgress(object sender, FileDownloadProgressChangedEventArgs e)
        {
            base.HttpDownloadFileProgress (sender, e);

            this.UpdateProgress (e.BytesTransferred, e.TotalBytesTransferred, e.TotalBytesExpectedToTransfer);
        }
        protected override void HttpDownloadFileProgress(object sender, FileDownloadProgressChangedEventArgs e)
        {
            base.HttpDownloadFileProgress (sender, e);

            this._totalBytesDownloaded += e.BytesTransferred;

            this.UpdateProgress (e.BytesTransferred, this._totalBytesDownloaded, this._estimatedDownloadSizeBytes);
        }