我怎样才能更快地下载文件?

时间:2015-04-29 07:14:36

标签: c# file download queue

我在C#中制作了一个下载程序。这是一个队列下载器。 您可以在此处查看其工作原理:点击Express Downloader

有更快的下载方法吗? 这是我使用的方法,它必须支持简历支持。

private void Download(object startPoint)
    {
        try
        {
            try
            {
                //int startPointInt = Convert.ToInt32(startPoint);
                Int64 startPointInt = Convert.ToInt64(startPoint);
                webRequest = (HttpWebRequest)WebRequest.Create(url);
                webRequest.AddRange(startPointInt);
                webRequest.Credentials = CredentialCache.DefaultCredentials;
                webResponse = (HttpWebResponse)webRequest.GetResponse();
                Int64 fileSize = webResponse.ContentLength;
                strResponse = webResponse.GetResponseStream();
                if (startPointInt == 0)
                {
                    strLocal = new FileStream(txtPath.Text + "\\" + filename, FileMode.Create, FileAccess.Write, FileShare.None);
                }
                else
                {
                    strLocal = new FileStream(txtPath.Text + "\\" + filename, FileMode.Append, FileAccess.Write, FileShare.None);
                }
                int bytesSize = 0;
                byte[] downBuffer = new byte[4096];
                while ((bytesSize = strResponse.Read(downBuffer, 0, downBuffer.Length)) > 0)
                {
                    strLocal.Write(downBuffer, 0, bytesSize);
                    this.Invoke(new UpdateProgessCallback(this.UpdateProgress), new object[] { strLocal.Length, fileSize + startPointInt });

                    if (goPause == true)
                    {
                        break;
                    }
                }
            }
            catch { }
        }
        finally
        {

            strResponse.Close();
            strLocal.Close();
        }
    }

1 个答案:

答案 0 :(得分:0)

你必须做两件事,

  1. 获得更快的带宽
  2. 将块大小从4096更改为8192或任何可以轻松保存在内存中的数字。