2008-11-20 2 views
0

Я использую несколько экземпляров класса WebClient, чтобы загружать множество небольших файлов одновременно с асинхронно с веб-сервера в Интернете.
URI, который я использую, имеет IP-обозначение номера, чтобы избежать ненужных разрешений DNS.WebClient.DownloadFileAsync: с большим количеством загрузок файлов

Я немного подталкиваю его, используя, например, 50+ экземпляров класса одновременно.

Я заметил, что, хотя большинство файлов загружено правильно, небольшой процент из них имеет длину 0, что означает, что нить никогда не завершилась успешно - возможно, из-за ошибки.
Однако AsyncCompletedEventArgs никогда не сообщал об ошибке.

Я слишком сильно нажимаю на него? Но опять же, не следует ли это выносить ошибку?

+0

У вас есть фрагмент кода, который воспроизводит/демонстрирует ошибку? – 2008-11-20 04:11:37

ответ

1

В случае, если кто получает на этом действительно старый вопрос, догадка, что поток был убит путь до того, как загрузка была завершена, ведущий к файлу с размером, равным 0.

Например, давайте сравним то, что происходит между

namespace ConsoleApp 
{ 
    class Program 
    { 
     static void Main(string[] args) 
     { 
      WebClient client = new WebClient(); 
      client.DownloadFileAsync(new Uri("http://ipv4.download.thinkbroadband.com/5MB.zip"), "C:\\5MB.zip"); 
      Thread.Sleep(30000); 
     } 
    } 
} 

и

namespace ConsoleApp 
{ 
    class Program 
    { 
     static void Main(string[] args) 
     { 
      WebClient client = new WebClient(); 
      client.DownloadFileAsync(new Uri("http://ipv4.download.thinkbroadband.com/5MB.zip"), "C:\\5MB.zip"); 
     } 
    } 
} 

Во втором случае, как только загрузка запускается программа, ведущая к прерывистой загрузке, которая проявляется в файле, создаваемом на диске C: с размером 0.

Смежные вопросы