Привіт друзі, сьогодні я розповім, як за допомогою C# реалізувати завантаження файлів з візуальним індикатором прогресу. Особливо важливо надавати зворотній зв'язок користувачу під час завантаження великих файлів.
Основні функції
- Завантаження XML файлів
- Прогрес-бар для консолі
- Відображення розміру завантаженого файлу та відсотків
- Обробка помилок
- Асинхронне завантаження файлів
Важливі частини коду
1. Ініціалізація завантаження
using (WebClient client = new WebClient())
{
client.DownloadProgressChanged += new DownloadProgressChangedEventHandler(DownloadProgressCallback);
client.DownloadFileCompleted += new AsyncCompletedEventHandler(DownloadCompletedCallback);
client.DownloadFileAsync(new Uri(xmlUrl), fileName);
}
2. Створення прогрес-бару
### 2. Створення прогрес-бару
```csharp
private static void DownloadProgressCallback(object sender, DownloadProgressChangedEventArgs e)
{
Console.Write("\r");
Console.Write("Завантажується: {0}% ", e.ProgressPercentage);
Console.Write("[{0}", new string('#', e.ProgressPercentage / 2));
Console.Write("{0}]", new string('-', 50 - (e.ProgressPercentage / 2)));
}
## Технічні деталі
- Асинхронне завантаження з використанням класу WebClient
- Динамічне відображення прогресу за допомогою Console.Write
- Підхід на основі подій (Event-based programming)
- Обробка помилок за допомогою блоків try-catch
## Сценарії використання
- Завантаження великих XML файлів
- Отримання даних з веб-сервісів
- Додатки, що потребують передачі файлів
## Переваги
1. Зручний інтерфейс для користувача
2. Відстеження прогресу в реальному часі
- Обробка помилок
- Асинхронна обробка завдань
## Рекомендації для розвитку
- Додати підтримку завантаження кількох файлів
- Інтеграція з графічними інтерфейсами (WinForms/WPF)
- Додати індикатор швидкості завантаження
- Додати функцію паузи/відновлення завантаження
## Підсумок
Цей додаток пропонує просте, але ефективне рішення для візуалізації процесу завантаження файлів. Він є чудовим прикладом для поліпшення користувацького досвіду в консолі.
Якщо ви хочете отримати доступ до всього коду проекту, переходьте за посиланням на GitHub [[**Link**](https://github.com/canmerkut/XMLFileDownloader/tree/main)] Тут
Перекладено з: [C# ile Dosya İndirme İşlemlerini Görselleştirme: Yüzde İlerleme Çubuğu Uygulaması](https://medium.com/@canmerkut/c-ile-dosya-i%CC%87ndirme-i%CC%87%C5%9Flemlerini-g%C3%B6rselle%C5%9Ftirme-y%C3%BCzde-i%CC%87lerleme-%C3%A7ubu%C4%9Fu-uygulamas%C4%B1-158d21a97426)