Запись в один файл из разных процессов - 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();
}
}
}
}