Загрузка данных


using System;
using System.Threading;
using System.Threading.Tasks;

// ну типа главная хуйня
class Program
{
    // старт программы
    static async Task Main()
    {
        // печатаем заголовок
        Console.WriteLine("=== АСИНХРОННЫЙ ЗАГРУЗЧИК ФАЙЛОВ ===");
        Console.WriteLine();
        Console.WriteLine();

        // спрашиваем сколько файлов
        Console.Write("Сколько файлов загрузить? ");
        string vvod = Console.ReadLine();
        int skolko = int.Parse(vvod);

        // говорим что начали
        Console.WriteLine();
        Console.WriteLine("Начинаю загрузку... Ctrl+C чтобы стоп");
        Console.WriteLine();

        // переменные
        int zagruzheno = 0;
        int obshiyProgres = 0;

        // ловим Ctrl+C
        Console.CancelKeyPress += (a, b) =>
        {
            b.Cancel = true;
            Console.WriteLine();
            Console.WriteLine();
            Console.WriteLine("Остановлено. Загружено: " + zagruzheno + " из " + skolko);
            Environment.Exit(0);
        };

        // асинхронный цикл загрузки
        while (zagruzheno < skolko)
        {
            // делаем вид что грузим
            await Task.Delay(800);

            // прибавляем
            zagruzheno = zagruzheno + 1;
            obshiyProgres = (zagruzheno * 100) / skolko;

            // печатаем прогресс
            Console.WriteLine("Файл " + zagruzheno + " из " + skolko + " загружен | прогресс: " + obshiyProgres + "%");
        }

        // когда всё закончилось
        Console.WriteLine();
        Console.WriteLine("Всё загружено нахуй!");
        Console.WriteLine("Загружено файлов: " + zagruzheno);
    }
}