Запись в один файл из разных процессов - C#
Формулировка задачи:
Добрый день. Возник вопрос. Необходимо одновременная запись в один файл из разных процессов. Вопрос первый: Впринципе такое возможно без потери данных и использования некоторого промежуточного приложения, которое скажем выстраивало всё в очередь и записывало в файл?
Вкачестве тестого примера попробывал вот такую конструкцию:
При таком подходе строки теряются. Необходимо каждую новую строку добавлять в конец файла.
Второй вопрос: Правильно ли я понял, что конструкции с использованием async и await используются ТОЛЬКО для много поточного приложения и в моём случае это не поможет?
using (var aFile = new FileStream(pathStorage, FileMode.Append, FileAccess.Write, FileShare.Write)) using (StreamWriter writer = new StreamWriter(aFile)) { for (int i = 0; i < 1000000; i++) { writer.WriteLine("Process one"); } }
Решение задачи: «Запись в один файл из разных процессов»
textual
Листинг программы
var path = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "output.txt"); using (var mutex = new Mutex(false, "UNIQUE_NAME")) { mutex.WaitOne(); using (var file = new FileStream(path, FileMode.Append, FileAccess.Write, FileShare.Write)) using (var writer = new StreamWriter(file)) { mutex.ReleaseMutex(); for (int i = 0; i < 100000; i++) { mutex.WaitOne(); writer.BaseStream.Seek(0, SeekOrigin.End); writer.WriteLine(args[0]); writer.Flush(); writer.BaseStream.Flush(); mutex.ReleaseMutex(); } } } }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д