using System;
using System.IO;
using System.Threading.Tasks;
class Program
{
static async Task Main()
{
// Задание 1: асинхронное чтение файла
Task chtenie = Task.Run(() => ChitatFail("text1.txt"));
Console.WriteLine("Основной поток: делаю другие дела...");
await chtenie;
Console.WriteLine("---");
// Задание 2: асинхронная запись в файл
Task zapis = ZapisatFail("output.txt", "Привет, мир!");
for (int i = 1; i <= 3; i++)
{
Console.WriteLine($"Статус: выполняю другую работу {i}");
await Task.Delay(200);
}
await zapis;
Console.WriteLine("---");
// Задание 3: параллельное чтение нескольких файлов
string[] faili = { "file1.txt", "file2.txt", "file3.txt" };
Task[] chteniya = new Task[faili.Length];
for (int i = 0; i < faili.Length; i++)
{
int index = i;
chteniya[index] = Task.Run(() => ProchitatIvivesti(faili[index]));
}
await Task.WhenAll(chteniya);
Console.WriteLine("---");
// Задание 4: цепочка асинхронных задач
string vhod = "data.txt";
string izhod = "result.txt";
string soderzhimoe = await File.ReadAllTextAsync(vhod);
string obrabotannoe = soderzhimoe.ToUpper();
await File.WriteAllTextAsync(izhod, obrabotannoe);
Console.WriteLine($"Обработка завершена. Результат в {izhod}");
}
static void ChitatFail(string imya)
{
string text = File.ReadAllText(imya);
Console.WriteLine($"Содержимое {imya}:\n{text}");
}
static async Task ZapisatFail(string imya, string soderzhimoe)
{
using (StreamWriter sw = new StreamWriter(imya))
{
await sw.WriteAsync(soderzhimoe);
}
Console.WriteLine($"Запись в {imya} завершена");
}
static void ProchitatIvivesti(string imya)
{
string text = File.ReadAllText(imya);
Console.WriteLine($"{imya}: {text}");
}
}