public static string link = "https://www.gutenberg.org/files/1342/1342-0.txt"; // Ссылка, откуда скачиваем книгу. /// <summary> /// Чтение, изменение, запись книг из папки синхронно. /// </summary> static void SyncPart() { // Удаление директории, если она была создана. Создание дииректории. try { if (Directory.Exists(directorySync)) { Directory.Delete(directorySync, true); } Directory.CreateDirectory(directorySync); } catch (Exception ex) { Console.WriteLine(ex.Message); } Console.ForegroundColor = ConsoleColor.Magenta; Console.WriteLine("Работа синхронного метода."); Console.ForegroundColor = ConsoleColor.White; // Запуск таймера, изменение содержимого книг. Stopwatch timer = new Stopwatch(); timer.Start(); try { foreach (String path in Directory.GetFiles(directoryName)) { BookWork.ChangeBook(path, true); } } catch (Exception ex) { Console.WriteLine(ex.Message); } timer.Stop(); // Вывод инфы о проделанной операции. string syncTime = String.Format("{0:00}.{1:000}", timer.Elapsed.Seconds, timer.Elapsed.Milliseconds); Console.ForegroundColor = ConsoleColor.Magenta; Console.WriteLine("Не асинхронная обработка заняла: " + syncTime + "секунд."); Console.ForegroundColor = ConsoleColor.White; }
/// <summary> /// Чтение, изменение, запись книг из папки асинхронно. /// </summary> public static async Task AsyncPart() { // Удаление директории, если она была создана. Создание дииректории. try { if (Directory.Exists(directoryAsync)) { Directory.Delete(directoryAsync, true); } Directory.CreateDirectory(directoryAsync); } catch (Exception ex) { Console.WriteLine(ex.Message); } Stopwatch timer = new Stopwatch(); Console.ForegroundColor = ConsoleColor.Yellow; Console.WriteLine("Работа асинхронного метода."); Console.ForegroundColor = ConsoleColor.White; // Запуск таймера, изменение содержимого книг. timer.Start(); await Task.WhenAll(Directory.GetFiles(directoryName).Select(file => Task.Run(() => BookWork.ChangeBook(file, false)))); timer.Stop(); // Вывод инфы о проделанной операции. Console.ForegroundColor = ConsoleColor.Yellow; string asyncTime = String.Format("{0:0}.{1:000}", timer.Elapsed.Seconds, timer.Elapsed.Milliseconds); Console.WriteLine("Асинхронная обработка заняла: " + asyncTime + " секунд."); Console.ForegroundColor = ConsoleColor.White; }