Запись в один файл из разных процессов - C#

Узнай цену своей работы

Формулировка задачи:

Добрый день. Возник вопрос. Необходимо одновременная запись в один файл из разных процессов. Вопрос первый: Впринципе такое возможно без потери данных и использования некоторого промежуточного приложения, которое скажем выстраивало всё в очередь и записывало в файл? Вкачестве тестого примера попробывал вот такую конструкцию:
Листинг программы
  1. using (var aFile = new FileStream(pathStorage, FileMode.Append, FileAccess.Write, FileShare.Write))
  2. using (StreamWriter writer = new StreamWriter(aFile))
  3. {
  4.  
  5. for (int i = 0; i < 1000000; i++)
  6. {
  7. writer.WriteLine("Process one");
  8. }
  9. }
При таком подходе строки теряются. Необходимо каждую новую строку добавлять в конец файла. Второй вопрос: Правильно ли я понял, что конструкции с использованием async и await используются ТОЛЬКО для много поточного приложения и в моём случае это не поможет?

Решение задачи: «Запись в один файл из разных процессов»

textual
Листинг программы
  1.             var path = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "output.txt");
  2.  
  3.             using (var mutex = new Mutex(false, "UNIQUE_NAME"))
  4.             {
  5.                 mutex.WaitOne();
  6.  
  7.                 using (var file = new FileStream(path, FileMode.Append, FileAccess.Write, FileShare.Write))
  8.                 using (var writer = new StreamWriter(file))
  9.                 {
  10.                     mutex.ReleaseMutex();
  11.  
  12.                     for (int i = 0; i < 100000; i++)
  13.                     {
  14.                         mutex.WaitOne();
  15.  
  16.                         writer.BaseStream.Seek(0, SeekOrigin.End);
  17.                         writer.WriteLine(args[0]);
  18.                         writer.Flush();
  19.                         writer.BaseStream.Flush();
  20.  
  21.                         mutex.ReleaseMutex();
  22.                     }
  23.                 }
  24.             }
  25.  
  26.         }

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

5   голосов , оценка 3.2 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы