public static void DownloadFileAsync(string url, string path, string name, Action <object, EventArgs> progressChangedAction = null, Action <object, int> completedAction = null) { if (!Directory.Exists(path)) { return; } if (!path.EndsWith("\\")) { path += "\\"; } var mtd = new MultiThreadDownloader(url, path + name, 1); if (progressChangedAction != null) { mtd.TotalProgressChanged += (sender, e) => progressChangedAction.Invoke(sender, e); } if (completedAction != null) { mtd.FileMergeProgressChanged += (sender, e) => completedAction.Invoke(sender, e); } mtd.Start(); /*new Task(new Action(() => * { * if (!Directory.Exists(path)) { return; } * if (!path.EndsWith("\\")) { path += "\\"; } * try * { * byte[] data = HttpWebClient.Get(url); * if (data.Length != 0) * { * FileStream fs = new FileStream(path + name, FileMode.OpenOrCreate, FileAccess.ReadWrite); * fs.Write(data, 0, data.Length); * fs.Flush(); * fs.Dispose(); * fs.Close(); * } * } * catch * { * * } * * })).Start();*/ }
private void btnDownload_Click(object sender, RoutedEventArgs e) { var mtd = new MultiThreadDownloader("https://download.oracle.com/otn-pub/java/jdk/15+36/779bf45e88a44cbd9ea6621d33e33db1/jdk-15_windows-x64_bin.zip", Environment.GetEnvironmentVariable("temp"), "jdk-15_windows-x64_bin.zip", 8); mtd.TotalProgressChanged += (sender, e) => { var downloader = sender as MultiThreadDownloader; Console.WriteLine("下载进度:" + downloader.TotalProgress + "%"); Console.WriteLine("下载速度:" + downloader.TotalSpeedInBytes / 1024 / 1024 + "MBps"); }; mtd.FileMergeProgressChanged += (sender, e) => { Console.WriteLine("下载完成"); }; mtd.Start();//开始下载 //mtd.Pause(); // 暂停下载 //mtd.Resume(); // 继续下载 }
static void Main(string[] args) { var mtd = new MultiThreadDownloader("https://git.imweb.io/ldqk0/imgbed/raw/master/2020/01/05/sdcgssa1wlxc.jpg", Environment.GetEnvironmentVariable("temp"), "Y:\\1.jpg", 8); mtd.Configure(req => { req.Referer = "https://masuit.com"; req.Headers.Add("Origin", "https://baidu.com"); }); mtd.TotalProgressChanged += (sender, e) => { var downloader = sender as MultiThreadDownloader; Console.WriteLine("下载进度:" + downloader.TotalProgress + "%"); Console.WriteLine("下载速度:" + downloader.TotalSpeedInBytes / 1024 / 1024 + "MBps"); }; mtd.FileMergeProgressChanged += (sender, e) => { Console.WriteLine("下载完成"); }; mtd.Start();//开始下载 Console.ReadKey(); }