Модераторы: Partizan, gambit
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Событие И делегаты в Классе 
V
    Опции темы
Samvel2010
Дата 24.1.2013, 11:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 12
Регистрация: 31.5.2010
Где: Москва-Ереван

Репутация: нет
Всего: нет



Добрый день .. Пытаюсь сделать загручик файлов  необходимы датчики скорости ,сколько загруженно ,весь размер ..
Я сам новичёк но не могу понять Как  это сделать 

Использую Этот класс

Код

using System;
using System.Collections.Generic;
using System.Text;
using System.Net;
using System.IO;
using System.Threading;
using System.Windows.Forms;

namespace Dwn123
{
    class Downloader
    {
        public DateTime DwNLoadChange;
        private const int chunkSize = 1024;
        private bool doDownload = true;
        public bool AcceptRanges = false;
        private string url;
        private string filename;
        private Thread downloadThread;

        public long FileSize
        {
            get;
            private set;
        }
        public long Progress
        {
            get;
            private set;
        }
        
        public Downloader(string Url, string Filename)
        {
            this.url = Url;
            this.filename = Filename;
            this.CheckAcceptRanges();
        }

        public void StartDownload()
        {
            Progress = 0;
            FileSize = 0;
            commenceDownload();
        }

        public void PauseDownload()
        {
            doDownload = false;
            downloadThread.Join();
        }

        public void ResumeDownload()
        {
            doDownload = true;
            commenceDownload();
        }

        private void commenceDownload()
        {
            downloadThread = new Thread(downloadWorker);
            downloadThread.Start();
        }

        public void CheckAcceptRanges()
        {
            HttpWebRequest request = WebRequest.Create(this.url) as HttpWebRequest;
            request.Method = "HEAD";
            var response = request.GetResponse() as HttpWebResponse;
            foreach (string sKey in response.Headers.Keys)
            {
                if (sKey.ToString() == "Accept-Ranges")
                {
                    this.AcceptRanges = true;
                    break;
                }
                else
                {
                    this.AcceptRanges = false;
                }
            }
        }

        public void downloadWorker()
        { 
            HttpWebRequest myHttpWebRequest = (HttpWebRequest)WebRequest.Create(url);
            FileMode filemode;
            
            if (Progress == 0) //Если сущетвет процесс "закачки"
            {
                filemode = FileMode.CreateNew;
            }
            else
            {
                filemode = FileMode.Append;
                myHttpWebRequest.AddRange((int)Progress);
            }
         
            using (FileStream fs = new FileStream(filename, filemode))

            using (HttpWebResponse myHttpWebResponse = (HttpWebResponse)myHttpWebRequest.GetResponse())
            {
                Stream receiveStream = myHttpWebResponse.GetResponseStream();
                FileSize = myHttpWebResponse.ContentLength;

                byte[] read = new byte[chunkSize];
                int count;


                while ((count = receiveStream.Read(read, 0, chunkSize)) > 0 && doDownload)
                {
                    fs.Write(read, 0, count);
                    count = receiveStream.Read(read, 0, chunkSize);

                    Progress += count;
                }
            }
        }
    }
}



Это сообщение отредактировал(а) Samvel2010 - 24.1.2013, 11:58
PM MAIL ICQ   Вверх
Certain
Дата 24.1.2013, 17:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 235
Регистрация: 18.6.2008
Где: Moscow

Репутация: нет
Всего: 4



Лучше использовать класс System.Net.WebClient

Используйте асинхронный метод DownloadFileAsync 

для отслеживания процесса подпишитесь на события
DownloadProgressChanged  - процесс загрузки (процент выполнения, общее количество байтов, количество полученных байтов)
DownloadFileCompleted   - окончание загрузки





Это сообщение отредактировал(а) Certain - 24.1.2013, 17:52
--------------------
Работа программиста и шамана имеет много общего - оба боpмочyт непонятные слова, совершают непонятные действия и не могут объяснить, как оно работает.
PM MAIL ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
Partizan
PashaPash

Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов.
Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :)
Так же не забывайте отмечать свой вопрос решенным, если он таковым является :)


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, Partizan, PashaPash.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | .NET для новичков | Следующая тема »


 




[ Время генерации скрипта: 0.0417 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.