OfficialPlugins.FrbUpdater.UpdateWindow.DoDownloadAndSaveFile C# (CSharp) Method

DoDownloadAndSaveFile() private method

private DoDownloadAndSaveFile ( bool &cancelled, System.IO.FileData fileData, Uri url, HttpWebResponse response ) : void
cancelled bool
fileData System.IO.FileData
url System.Uri
response System.Net.HttpWebResponse
return void
        private void DoDownloadAndSaveFile(ref bool cancelled, FileData fileData, Uri url, HttpWebResponse response)
        {
            int bytesDownloaded = 0;
            var fileSize = response.ContentLength;
            var fileTimeStamp = response.LastModified;

            using (var mClient = new WebClient())
            {
                if (!AlreadyDownloaded(fileData, fileTimeStamp))
                {
                    using (var webStream = mClient.OpenRead(url))
                    {
                        using (var fileStream = new FileStream(fileData.DiskFile, FileMode.Create, FileAccess.Write,
                                                        FileShare.None))
                        {
                            _fileName = fileData.ProjectType + ": " + fileData.FileName;

                            int bytesRead = 0;
                            var byteBuffer = new byte[fileSize];

                            if (webStream != null)
                            {
                                var start = DateTime.Now;

                                while ((bytesRead = webStream.Read(byteBuffer, 0, byteBuffer.Length)) > 0)
                                {
                                    fileStream.Write(byteBuffer, 0, bytesRead);
                                    bytesDownloaded += bytesRead;

                                    UpdateDownloadProgressAndSpeed(bytesDownloaded, byteBuffer, start);

                                    if (updateWorkerThread.CancellationPending)
                                    {
                                        cancelled = true;
                                        break;
                                    }
                                }
                            }
                        }
                    }

                    using (var writer = new StreamWriter(fileData.TimestampFile))
                    {
                        writer.Write(fileTimeStamp.ToString());
                    }

                    _downloadedFile = true;
                }
                else
                {
                    pbValue.BeginInvoke(
                        new EventHandler(
                            delegate
                            {
                                pbValue.Value = 100;
                                Application.DoEvents();
                            }));
                }
            }
        }