示例#1
0
        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();*/
        }
示例#2
0
        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(); // 继续下载
        }
示例#3
0
        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();
        }