public static ProgressBarPanel getPanel(ControlledDownloader downloader)
        {
            ProgressBarPanel pgPanel = null;

            foreach (DownloaderThreadAndProgressPanel dwnlderPanel in downloadersAndPanels)
            {
                if(ReferenceEquals(downloader, dwnlderPanel.threadAndDownloader.Downloader))
                {
                    pgPanel = dwnlderPanel.pgPanel;
                }
            }

            return pgPanel;
        }
        public static void appendToDownloadedStatistics(ControlledDownloader Downloader)
        {
            DownloadStatistics downloadStats = new DownloadStatistics();
            downloadStats.contentLength = Downloader.ContentLength;
            downloadStats.fileName = Downloader.SaveFileName;
            downloadStats.saveLocation = Downloader.FileSaveLocation;
            downloadStats.completeSaveFile = Downloader.CompleteSaveFileName;
            downloadStats.url = Downloader.Url;
               // downloadStats.responseHeaders = Downloader.ResponseHeaders;

            MD5Calculator md5Calculator = new MD5Calculator();
            downloadStats.MD5Checksum = md5Calculator.computeHash(Downloader.CompleteSaveFileName);

            appendToDownloadedStatistics(downloadStats);
        }
 public ThreadsAndDownloader(ControlledDownloader downloader, Thread thread)
 {
     this.downloader = downloader;
     this.downloaderThread = thread;
 }
        private static ThreadsAndDownloader startDownload(ControlledDownloader downloader)
        {
            Thread DMThread = new Thread(new ThreadStart(downloader.download));
            DMThread.IsBackground = true;

            ThreadsAndDownloader threadAndDownloader = new ThreadsAndDownloader(
                downloader, DMThread);

            ThreadsToDownloaderTable.Add(threadAndDownloader);

            DMThread.Start();

            return threadAndDownloader;
        }
        public static ThreadsAndDownloader download(string url, string saveFileLocation, string saveFileName)
        {
            ControlledDownloader downloader = new ControlledDownloader(url, (saveFileLocation + saveFileName));

            return startDownload(downloader);
        }
        public static ThreadsAndDownloader download(string url, string completeSaveFile)
        {
            ControlledDownloader downloader = new ControlledDownloader(url, completeSaveFile);

            return startDownload(downloader);
        }
        public static ThreadsAndDownloader download(string url)
        {
            ControlledDownloader downloader = new ControlledDownloader(url);

            return startDownload(downloader);
        }