DownloadProgressCallback() public méthode

public DownloadProgressCallback ( byte percent ) : void
percent byte
Résultat void
        public Exception Download(DownloadInfo downloadInfo)
        {
            HttpWebResponse response = null;
            try
            {
				downloadThread = System.Threading.Thread.CurrentThread;
                using (FileStream fs = new FileStream(downloadInfo.LocalFile, FileMode.Create, FileAccess.Write, FileShare.None))
                {
                    HttpWebRequest request = (HttpWebRequest)System.Net.WebRequest.Create(downloadInfo.Url);
                    request.Timeout = 15000;
                    request.UserAgent = OnlineVideoSettings.Instance.UserAgent;
                    request.Accept = "*/*";
                    request.Headers.Add(HttpRequestHeader.AcceptEncoding, "gzip,deflate");
                    response = (HttpWebResponse)request.GetResponse();
                                        
                    Stream responseStream;
                    if (response.ContentEncoding.ToLower().Contains("gzip"))
                        responseStream = new System.IO.Compression.GZipStream(response.GetResponseStream(), System.IO.Compression.CompressionMode.Decompress);
                    else if (response.ContentEncoding.ToLower().Contains("deflate"))
                        responseStream = new System.IO.Compression.DeflateStream(response.GetResponseStream(), System.IO.Compression.CompressionMode.Decompress);
                    else
                        responseStream = response.GetResponseStream();

                    long size = response.ContentLength;
                    int buffSize = 4096;
                    byte[] buffer = new byte[buffSize];
                    long totalRead = 0;
                    long readSize;
                    do
                    {
                        readSize = responseStream.Read(buffer, 0, buffSize);
                        totalRead += readSize;
                        fs.Write(buffer, 0, (int)readSize);
                        downloadInfo.DownloadProgressCallback(size, totalRead);
                    }
                    while (readSize > 0 && !Cancelled);

                    fs.Flush();
                    fs.Close();

                    return null;
                }
            }
            catch (Exception ex)
            {
                return ex;
            }
            finally
            {
                if (response != null) response.Close();
            }
        }
        public Exception Download(DownloadInfo downloadInfo)
        {
            IDownload sourceFilter = null;

            try
            {
                downloadThread = System.Threading.Thread.CurrentThread;
                this.downloadResult = 0;
                this.downloadFinished = false;
                this.cancelled = false;

                sourceFilter = (IDownload)new MPUrlSourceSplitter();
                String url = UrlBuilder.GetFilterUrl(downloadInfo.Util, downloadInfo.Url);

                IDownload downloadFilter = (IDownload)sourceFilter;
                int result = downloadFilter.DownloadAsync(url, downloadInfo.LocalFile, this);
                // throw exception if error occured while initializing download
                Marshal.ThrowExceptionForHR(result);

                while (!this.downloadFinished)
                {
                    long total = 0;
                    long current = 0;
                    if (downloadFilter.QueryProgress(out total, out current) >= 0)
                    {
                        // succeeded or estimated value
                        downloadInfo.DownloadProgressCallback(total, current);
                    }

                    // sleep some time
                    System.Threading.Thread.Sleep(100);

                    if (this.cancelled)
                    {
                        downloadFilter.AbortOperation();
                        this.downloadFinished = true;
                        this.downloadResult = 0;
                    }
                }

                // throw exception if error occured while downloading
                Marshal.ThrowExceptionForHR(this.downloadResult);

                return null;
            }
            catch (Exception ex)
            {
                return ex;
            }
            finally
            {
                if (sourceFilter != null)
                {
                    Marshal.ReleaseComObject(sourceFilter);
                }
            }
        }
Exemple #3
0
        public Exception Download(DownloadInfo downloadInfo)
        {
            HttpWebResponse response = null;

            try
            {
                _downloadThread = System.Threading.Thread.CurrentThread;
                using (FileStream fs = new FileStream(downloadInfo.LocalFile, FileMode.Create, FileAccess.Write, FileShare.None))
                {
                    HttpWebRequest request = (HttpWebRequest)WebRequest.Create(downloadInfo.Url);
                    request.Timeout   = 15000;
                    request.UserAgent = OnlineVideoSettings.Instance.UserAgent;
                    request.Accept    = "*/*";
                    request.Headers.Add(HttpRequestHeader.AcceptEncoding, "gzip,deflate");
                    response = (HttpWebResponse)request.GetResponse();

                    Stream responseStream;
                    if (response.ContentEncoding.ToLower().Contains("gzip"))
                    {
                        responseStream = new System.IO.Compression.GZipStream(response.GetResponseStream(), System.IO.Compression.CompressionMode.Decompress);
                    }
                    else if (response.ContentEncoding.ToLower().Contains("deflate"))
                    {
                        responseStream = new System.IO.Compression.DeflateStream(response.GetResponseStream(), System.IO.Compression.CompressionMode.Decompress);
                    }
                    else
                    {
                        responseStream = response.GetResponseStream();
                    }

                    long   size      = response.ContentLength;
                    int    buffSize  = 4096;
                    byte[] buffer    = new byte[buffSize];
                    long   totalRead = 0;
                    long   readSize;
                    do
                    {
                        readSize   = responseStream.Read(buffer, 0, buffSize);
                        totalRead += readSize;
                        fs.Write(buffer, 0, (int)readSize);
                        downloadInfo.DownloadProgressCallback(size, totalRead);
                    }while (readSize > 0 && !Cancelled);

                    fs.Flush();
                    fs.Close();

                    return(null);
                }
            }
            catch (Exception ex)
            {
                return(ex);
            }
            finally
            {
                if (response != null)
                {
                    response.Close();
                }
            }
        }