У меня есть txt файл ABC.txt, который будет прочитан и написан несколькими процессами. Поэтому, когда один процесс читает или записывает файл ABC.txt, файл ABC.txt должен быть заблокирован, чтобы другие процессы не могли читать или писать на него. Я знаю, что перечисление System.IO.FileShare может быть правильным способом справиться с этой проблемой. Но я использовал другой способ, который я не уверен, правильно ли это. Следующее - мое решение.
Я добавил в папку еще один файл Lock.txt. Прежде чем я смогу прочитать или записать в файл ABC.txt, я должен иметь возможность читать из файла Lock.txt. И после того, как я прочитал или написал файл ABC.txt, я должен освободить эту возможность. Ниже приведен код.
#region Enter the lock
FileStream lockFileStream = null;
bool lockEntered = false;
while (lockEntered == false)
{
try
{
lockFileStream = File.Open("Lock.txt", FileMode.Open, FileAccess.Read, FileShare.None);
lockEntered = true;
}
catch (Exception)
{
Thread.Sleep(500);
}
}
#endregion
#region Do the work
// Read from or write to File ABC.txt
// Read from or write to other files
#endregion
#region Release the lock
try
{
if (lockFileStream != null)
{
lockFileStream.Dispose();
}
}
catch
{
}
#endregion
На моем компьютере кажется, что это решение работает хорошо, но я все еще не могу убедиться, что он подходит.
Изменить: Много процессов, а не несколько потоков в одном процессе.