Запись в один файл из разных процессов - 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();
- }
- }
- }
- }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д