|
Внимание, важное сообщение: Дорогие Друзья!
В ноябре далекого 2001 года мы решили создать сайт и форум, которые смогут помочь как начинающим, так и продвинутым пользователям разобраться в операционных системах. В 2004-2006г наш проект был одним из самых крупных ИТ ресурсов в рунете, на пике нас посещало более 300 000 человек в день! Наша документация по службам Windows и автоматической установке помогла огромному количеству пользователей и сисадминов. Мы с уверенностью можем сказать, что внесли большой вклад в развитие ИТ сообщества рунета. Но... время меняются, приоритеты тоже. И, к сожалению, пришло время сказать До встречи! После долгих дискуссий было принято решение закрыть наш проект. 1 августа форум переводится в режим Только чтение, а в начале сентября мы переведем рубильник в положение Выключен Огромное спасибо за эти 24 года, это было незабываемое приключение. Сказать спасибо и поделиться своей историей можно в данной теме. С уважением, ваш призрачный админ, BigMac... |
|
| Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » .NET - С# Загрузка файла с отображением процесса загрузки |
|
|
.NET - С# Загрузка файла с отображением процесса загрузки
|
|
Пользователь Сообщения: 51 |
Добрый день.
С#, Net Framework 4.5 Хочу создать консольное приложение которое загрузит файл с отображением процесса загрузки. using System;
using System.ComponentModel;
using System.IO;
using System.Net;
public class Program
{
public static void Main()
{
new Program().Download("https://github.com/deemru/Chromium-Gost/releases/download/121.0.6167.85/chromium-gost-121.0.6167.85-windows-386.zip");
}
public void Download(string remoteUri)
{
string FilePath = Directory.GetCurrentDirectory() + "/temp/" + Path.GetFileName(remoteUri);
using (WebClient client = new WebClient())
{
if (!Directory.Exists("temp"))
{
Directory.CreateDirectory("temp");
}
Uri uri = new Uri(remoteUri);
client.DownloadFileCompleted += new AsyncCompletedEventHandler(Extract);
client.DownloadProgressChanged += new DownloadProgressChangedEventHandler(ProgessChanged);
client.DownloadFileAsync(uri, FilePath);
}
}
public void Extract(object sender, AsyncCompletedEventArgs e)
{
Console.WriteLine("File has been downloaded.");
}
public void ProgessChanged(object sender, DownloadProgressChangedEventArgs e)
{
Console.WriteLine($"Download status: {e.ProgressPercentage}%.");
}
}
В таком виде работает, но хотелось бы отображение процесса загрузки. using System;
using System.Net;
namespace test
{
internal class Program
{
static void Main1(string[] args)
{
string URI = "https://github.com/deemru/Chromium-Gost/releases/download/121.0.6167.85/chromium-gost-121.0.6167.85-windows-386.zip";
using (var client = new WebClient())
{
//ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12;
client.DownloadFile(URI , "chromium-gost-121.0.6167.85-windows-386.zip");
}
Console.WriteLine("Готово");
Console.ReadKey();
}
}
}
|
|
|
Отправлено: 00:50, 31-01-2024 |
|
Deadooshka Сообщения: 2565
|
Профиль | Отправить PM | Цитировать Цитата nwss:
|
|
|
Отправлено: 08:35, 31-01-2024 | #2 |
|
Пользователь Сообщения: 51
|
Профиль | Отправить PM | Цитировать Цитата Sham:
то что не асинхронный работает я понимаю, но мне хочется отображение процесса загрузки. пока что сделал вот такое убожество, но выглядит не так красиво, как хотелось бы. using System;
using System.IO;
using System.Net;
namespace test
{
internal class Program
{
static void Main(string[] args)
{
string URI = "https://github.com/deemru/Chromium-Gost/releases/download/121.0.6167.85/chromium-gost-121.0.6167.85-windows-386.zip";
using (var client = new WebClient())
{
//ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12;
client.DownloadFileAsync(new Uri(URI), "chromium-gost-121.0.6167.85-windows-386.zip");
while (client.IsBusy)
{
long length = new FileInfo("chromium-gost-121.0.6167.85-windows-386.zip").Length;
Console.Clear();
Console.WriteLine("Еще качаем \"{0}\" Мбайт", length / 1024 / 1024);
System.Threading.Thread.Sleep(100);
}
}
Console.WriteLine("Готово");
Console.ReadKey();
}
}
}
|
|
|
Отправлено: 18:37, 31-01-2024 | #3 |
|
Deadooshka Сообщения: 2565
|
Профиль | Отправить PM | Цитировать хотя сам WebClient и не IDisposable, но наследует от такого (Component). Для чего тогда using(){}?
Цитата nwss:
|
|
|
Отправлено: 19:42, 31-01-2024 | #4 |
|
Deadooshka Сообщения: 2565
|
Профиль | Отправить PM | Цитировать у меня этот вариант нормально отработал (компилировал под .net framework в win10)
using System;
using System.ComponentModel;
using System.IO;
using System.Net;
public class Program
{
public static void Main()
{
new Program().Download("https://github.com/deemru/Chromium-Gost/releases/download/121.0.6167.85/chromium-gost-121.0.6167.85-windows-386.zip");
}
public void Download(string remoteUri)
{
string FilePath = Directory.GetCurrentDirectory() + "/temp/" + Path.GetFileName(remoteUri);
using (WebClient client = new WebClient())
{
if (!Directory.Exists("temp"))
{
Directory.CreateDirectory("temp");
}
Uri uri = new Uri(remoteUri);
client.DownloadFileCompleted += new AsyncCompletedEventHandler(Extract);
client.DownloadProgressChanged += new DownloadProgressChangedEventHandler(ProgessChanged);
ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12;
client.DownloadFileTaskAsync(uri, FilePath).Wait();
}
}
public void Extract(object sender, AsyncCompletedEventArgs e)
{
Console.Write("\nFile has been downloaded.\n");
}
public void ProgessChanged(object sender, DownloadProgressChangedEventArgs e)
{
Console.Write("\rDownload status: " + e.ProgressPercentage + "%.");
}
}
|
|
|
Отправлено: 20:04, 31-01-2024 | #5 |
|
|
Участник сейчас на форуме |
|
Участник вне форума |
![]() |
Автор темы |
![]() |
Сообщение прикреплено |
| |||||
| Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
| Интерфейс - Проблема с отображением папки сохранения файла | Kluk | Microsoft Windows 10 | 9 | 24-06-2016 14:38 | |
| CMD/BAT - [решено] Бар загрузки или выполнения процесса в bat cmd | DJIOAN | Скриптовые языки администрирования Windows | 4 | 25-08-2015 00:36 | |
| [решено] открытие файла при закрытии процесса | Freaxxx | AutoIt | 2 | 08-07-2012 21:14 | |
| Загрузка - зацикливание начального процесса загрузки | WChek | Microsoft Windows 2000/XP | 10 | 08-07-2008 02:20 | |
| Debian/Ubuntu - Ubuntu не видно процесса загрузки. | xden777 | Общий по Linux | 13 | 07-01-2008 17:46 | |
|