private void btnDownload_Click(object sender, EventArgs e) { Application.UseWaitCursor = true; stopped = false; btnStop.Enabled = true; btnDownload.Enabled = false; Utils.Proxies = GetProxiesList(); txtConsole.Clear(); List <Thread> threads = new List <Thread>(); downloaderPool.Add(new DownloaderThread(prb1, lblFile1, lblProxy1, lblDownload1, lblSpeed1, lblTimeLeft1)); downloaderPool.Add(new DownloaderThread(prb2, lblFile2, lblProxy2, lblDownload2, lblSpeed2, lblTimeLeft2)); downloaderPool.Add(new DownloaderThread(prb3, lblFile3, lblProxy3, lblDownload3, lblSpeed3, lblTimeLeft3)); int i = 0; while (i < directLinks.Count) { DownloaderThread downloaderThread = downloaderPool.Take(); if (downloaderThread != null) { string link = directLinks[i]; if (!Utils.DownloadedLinks.Contains(link)) { AddDownloadSongToConsole(link); downloaderThread.Downloader = new Downloader(link, txtDownloadFolder.Text.Trim()); Thread t = new Thread(downloaderThread.Download); threads.Add(t); t.Start(); } else { AddDownloadSongToConsole(link + ". Downloaded Already!"); } i++; } else { Application.DoEvents(); } /* * int result = DownloadFile(link); * string addr; * while ((result == 403 || result == -1) && (proxies.Count() > 0)) * { * addr = proxies[0]; * if (!String.IsNullOrEmpty(addr)) * { * WebProxy proxy = new WebProxy(addr); * AddDownloadSongToConsole(link); * result = DownloadFile(link, proxy); * } * proxies.RemoveAt(0); * } */ } bool running = true; while (running) { bool allStopped = true; foreach (Thread t in threads) { allStopped = allStopped && ((t.ThreadState == ThreadState.Aborted) || (t.ThreadState == ThreadState.Stopped)); } running = !allStopped; Application.DoEvents(); } txtConsole.AppendText(Environment.NewLine); txtConsole.AppendText(" - DONE." + Environment.NewLine); btnDownload.Enabled = true; btnStop.Enabled = false; Application.UseWaitCursor = false; }
public void Add(DownloaderThread downloaderThread) { pool.Add(downloaderThread); }