protected override void ProcessRecord() { base.ProcessRecord(); var dlItem = new UMDownload(Update, Path); Download(dlItem); }
private void Download(UMDownload dlItem) { Console.CancelKeyPress += new ConsoleCancelEventHandler(BreakHandler); var dl = dlItem; string finalPath = dl.DownloadPath + "\\" + dl.FileName; int bytesProcessed = 0; pb = new ProgressBar(); try { var req = WebRequest.CreateHttp(dl.UpdateUrl); res = req.GetResponse() as HttpWebResponse; } catch (Exception e) { throw new Exception("Download failed!", e); } using (resStream = res.GetResponseStream()) { long Length = res.ContentLength; using (fileStream = File.OpenWrite(finalPath)) { byte[] buffer = new byte[10240]; int bytesRead = resStream.Read(buffer, 0, 10240); try { while (bytesRead > 0) { bytesProcessed += bytesRead; pb.Report((double)bytesProcessed / Length); fileStream.Write(buffer, 0, bytesRead); bytesRead = resStream.Read(buffer, 0, 10240); } } catch { Thread.Sleep(1000); File.Delete(finalPath); throw new UMDownloadCancelledException(); } } resStream.Close(); resStream.Dispose(); } pb.Dispose(); Console.WriteLine("Download finished for " + dl.FileName); }