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

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

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

Добрый день. Возник вопрос. Необходимо одновременная запись в один файл из разных процессов. Вопрос первый: Впринципе такое возможно без потери данных и использования некоторого промежуточного приложения, которое скажем выстраивало всё в очередь и записывало в файл? Вкачестве тестого примера попробывал вот такую конструкцию:
 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");
                            
                        }
   }
При таком подходе строки теряются. Необходимо каждую новую строку добавлять в конец файла. Второй вопрос: Правильно ли я понял, что конструкции с использованием async и await используются ТОЛЬКО для много поточного приложения и в моём случае это не поможет?

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

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();
                    }
                }
            }
 
        }

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


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

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

5   голосов , оценка 3.2 из 5
Похожие ответы