[C#] Асинхронное скачивание файла

Discussion in 'С/С++, C#, Rust, Swift, Go, Java, Perl, Ruby' started by immortalist, 26 Feb 2011.

  1. immortalist

    immortalist Member

    Joined:
    16 Jan 2010
    Messages:
    99
    Likes Received:
    64
    Reputations:
    37
    В общем возникла необходимость скачать n-ное количество файловю. Качаю страницу, выдираю ссылки в MatchCollection.

    Далее качаю:
    Code:
    foreach (Match link in links)
    {
      WebClient webClient = new WebClient();
      webClient.DownloadFileCompleted += new AsyncCompletedEventHandler(Completed);
      webClient.DownloadFileAsync(new Uri("link"), @"bla-bla-bla.bla");
    }
    
            private void Completed(object sender, AsyncCompletedEventArgs e)
            {
                if (InvokeRequired) BeginInvoke(new Action(() => { log("Download completed!"); }));
                else log("Download completed!");
                //log("Download completed!");
            }
    
    Проблема в том, что в лог сыпятся "Download completed!" после каждого закачанного куска, а не файла.... Как быть? Что я делаю не так?
     
  2. W!z@rD

    W!z@rD Борец за русский язык

    Joined:
    12 Feb 2006
    Messages:
    973
    Likes Received:
    290
    Reputations:
    43
    class Program
    {
    static void Main(string[] args)
    {
    var cl = new WebClient();
    cl.DownloadFileAsync(new Uri("site.com/a.mp3"), "file.mp3");
    cl.DownloadFileCompleted += (a, b) => Console.WriteLine("completed");
    cl.DownloadProgressChanged += (a, b) => Console.WriteLine("Received: {0}", b.BytesReceived);
    Console.ReadKey();
    }
    }

    ??????????????
    В чем проблема?
     
  3. immortalist

    immortalist Member

    Joined:
    16 Jan 2010
    Messages:
    99
    Likes Received:
    64
    Reputations:
    37
    в том, что софт не консольный, а винформс, и я качаю сразу 10-15 фалов.
     
  4. W!z@rD

    W!z@rD Борец за русский язык

    Joined:
    12 Feb 2006
    Messages:
    973
    Likes Received:
    290
    Reputations:
    43
    и что?
    разница?