2015-04-29 2 views
-2

Я сделал программу загрузки на 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(); 
     } 
    } 
+3

Получить более быстрый широкополосный доступ? –

+0

@MattWilko DING DING DING. У нас победитель! –

+0

Вы можете посмотреть в сжатие http: http://compositecode.com/2009/03/24/using-http-compression-for-faster-downloads-with-net-c/ – Ako

ответ

0

Вы должны сделать две вещи,

  1. Получить быстрее пропускной
  2. Изменить размер блока от 4096 до что-то вроде 8192 или любое число, которое может быть держать в памяти легко.
+0

Могу ли я сделать метод, который проверяет, насколько высок размер блока? Как какой-то код, который анализирует компьютер ... и находит максимальный размер блока? – mrphil2105

+0

В идеальном сценарии, я думаю, вы можете иметь размер блока до вашего размера оперативной памяти. Но я бы предложил размер блока 64MB – Abhishek

+0

. Есть ли какой-нибудь код, который может анализировать спецификации компьютеров для оптимального размера блока? – mrphil2105