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


Вот код на C# для студента-новичка, без комментариев, с меню выбора всех 4 заданий по асинхронности:

```csharp
using System;
using System.IO;
using System.Threading.Tasks;
using System.Text;

class Program
{
    static async Task Main()
    {
        while (true)
        {
            Console.WriteLine("\nВыберите задание:");
            Console.WriteLine("1 - Асинхронное чтение файла");
            Console.WriteLine("2 - Асинхронная запись в файл");
            Console.WriteLine("3 - Параллельное чтение нескольких файлов");
            Console.WriteLine("4 - Цепочка асинхронных задач");
            Console.WriteLine("0 - Выход");
            Console.Write("Ваш выбор: ");

            string choice = Console.ReadLine();

            if (choice == "0") break;

            switch (choice)
            {
                case "1":
                    await Task1();
                    break;
                case "2":
                    await Task2();
                    break;
                case "3":
                    await Task3();
                    break;
                case "4":
                    await Task4();
                    break;
                default:
                    Console.WriteLine("Неверный выбор!");
                    break;
            }
        }
    }

    static async Task Task1()
    {
        string file = "test1.txt";
        File.WriteAllText(file, "Это пример текста для асинхронного чтения.");

        Task readTask = ReadFileAsync(file);

        for (int i = 1; i <= 5; i++)
        {
            Console.WriteLine($"Основной поток: сообщение {i}");
            await Task.Delay(200);
        }

        await readTask;
    }

    static async Task ReadFileAsync(string file)
    {
        using (StreamReader reader = new StreamReader(file))
        {
            string content = await reader.ReadToEndAsync();
            Console.WriteLine($"\nСодержимое файла: {content}");
        }
    }

    static async Task Task2()
    {
        string file = "test2.txt";
        string data = "Данные для асинхронной записи в файл.";

        Task writeTask = WriteFileAsync(file, data);

        for (int i = 1; i <= 3; i++)
        {
            Console.WriteLine($"Статус операции: запись выполняется... шаг {i}");
            await Task.Delay(300);
        }

        await writeTask;
        Console.WriteLine("Запись успешно завершена!");

        using (StreamReader reader = new StreamReader(file))
        {
            string content = await reader.ReadToEndAsync();
            Console.WriteLine($"Проверка: {content}");
        }
    }

    static async Task WriteFileAsync(string file, string data)
    {
        using (StreamWriter writer = new StreamWriter(file))
        {
            await writer.WriteAsync(data);
        }
    }

    static async Task Task3()
    {
        string file1 = "fileA.txt";
        string file2 = "fileB.txt";
        string file3 = "fileC.txt";

        File.WriteAllText(file1, "Первый файл: Привет, мир!");
        File.WriteAllText(file2, "Второй файл: Асинхронное программирование");
        File.WriteAllText(file3, "Третий файл: Параллельное чтение файлов");

        Task<string> task1 = ReadFileContentAsync(file1);
        Task<string> task2 = ReadFileContentAsync(file2);
        Task<string> task3 = ReadFileContentAsync(file3);

        string[] results = await Task.WhenAll(task1, task2, task3);

        Console.WriteLine("Результаты параллельного чтения:");
        foreach (string result in results)
        {
            Console.WriteLine(result);
        }
    }

    static async Task<string> ReadFileContentAsync(string file)
    {
        using (StreamReader reader = new StreamReader(file))
        {
            string content = await reader.ReadToEndAsync();
            return content;
        }
    }

    static async Task Task4()
    {
        string inputFile = "input.txt";
        string outputFile = "output.txt";

        string data = "Исходные данные: 10,20,30,40,50";
        File.WriteAllText(inputFile, data);
        Console.WriteLine("Создан исходный файл");

        Task<string> readTask = ReadFileAsyncTask(inputFile);
        Console.WriteLine("Запущено асинхронное чтение...");

        string content = await readTask;
        Console.WriteLine("Чтение завершено");

        Task<int[]> processTask = ProcessDataAsync(content);
        Console.WriteLine("Запущена обработка данных...");

        int[] numbers = await processTask;
        Console.WriteLine("Обработка завершена");

        Task writeTask = WriteResultsAsync(outputFile, numbers);
        Console.WriteLine("Запущена запись результатов...");

        await writeTask;
        Console.WriteLine("Все задачи выполнены!");

        string result = await File.ReadAllTextAsync(outputFile);
        Console.WriteLine($"Результат в файле: {result}");
    }

    static async Task<string> ReadFileAsyncTask(string file)
    {
        using (StreamReader reader = new StreamReader(file))
        {
            return await reader.ReadToEndAsync();
        }
    }

    static async Task<int[]> ProcessDataAsync(string content)
    {
        return await Task.Run(() =>
        {
            string[] parts = content.Split(':', ',');
            int[] numbers = new int[5];

            int index = 0;
            for (int i = 1; i < parts.Length; i++)
            {
                if (int.TryParse(parts[i].Trim(), out int num))
                {
                    numbers[index] = num * 2;
                    index++;
                }
            }
            return numbers;
        });
    }

    static async Task WriteResultsAsync(string file, int[] data)
    {
        using (StreamWriter writer = new StreamWriter(file))
        {
            string result = "Обработанные данные: " + string.Join(", ", data);
            await writer.WriteAsync(result);
        }
    }
}
```