Exemplo n.º 1
0
        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);
 }