none
Скачивание в WebClient в отдельном потоке BackgroundWorker RRS feed

  • Вопрос

  • хочу скачать файл в отдельном потоке... (Он та скачиватся, но не выводит прогресс в процесс бар...)

    Может надо использовать for как и везде...  Но скачиваю всего один файл...

    31 января 2015 г. 17:38

Ответы

  • А что - то по указанному адресу нет файла...

    private void button1_Click(object sender, EventArgs e)
            {
                WebClient client = new WebClient();
                Uri uri = new Uri("http://primer.by/joomla/files.zip");
                String path = @"C:\files.zip";
                client.DownloadFileCompleted += new AsyncCompletedEventHandler(DownloadFileCallback);
                client.DownloadProgressChanged += new DownloadProgressChangedEventHandler(DownloadProgressCallback);
                client.DownloadFileAsync(uri, path);
            }
    
            private void DownloadProgressCallback(object sender, DownloadProgressChangedEventArgs e)
            {
                this.progressBar1.Value = e.ProgressPercentage;
            }
    
            private void DownloadFileCallback(object sender, AsyncCompletedEventArgs e)
            {
                MessageBox.Show("Downloaded");
            }

    • Помечено в качестве ответа motokraft 1 февраля 2015 г. 6:16
    31 января 2015 г. 21:13

Все ответы

  • т.е. кто - то должен по твоему описанию проблемы догадаться, что ты перед скачиванием файла не получил его размер, а во время скачивания не стал вычислять прогресс, высчитывая сколько будет уже_скачано*100/размер_файла?

    Покажи код.

    31 января 2015 г. 18:43
  • Вот как скачиваю...

    WebClient webClient = new WebClient();
                webClient.DownloadFile("http://primer.by/joomla/files.zip", @"C:\files.zip");

    Я думаю что надо использовать

    for (int i = 0; i < lintfile.Count; i++)

    где, lintfile.Count это размер файла....

    Так вычисляю процент выполнения

    int n = (int)i * 100 / lintfile.Count;

    Вот этим вывожу в процесс бар...

    backgroundWorker2.ReportProgress(n);
    Но что то не получается все это совместить...

    31 января 2015 г. 19:17
  • А что - то по указанному адресу нет файла...

    private void button1_Click(object sender, EventArgs e)
            {
                WebClient client = new WebClient();
                Uri uri = new Uri("http://primer.by/joomla/files.zip");
                String path = @"C:\files.zip";
                client.DownloadFileCompleted += new AsyncCompletedEventHandler(DownloadFileCallback);
                client.DownloadProgressChanged += new DownloadProgressChangedEventHandler(DownloadProgressCallback);
                client.DownloadFileAsync(uri, path);
            }
    
            private void DownloadProgressCallback(object sender, DownloadProgressChangedEventArgs e)
            {
                this.progressBar1.Value = e.ProgressPercentage;
            }
    
            private void DownloadFileCallback(object sender, AsyncCompletedEventArgs e)
            {
                MessageBox.Show("Downloaded");
            }

    • Помечено в качестве ответа motokraft 1 февраля 2015 г. 6:16
    31 января 2015 г. 21:13