我有一个 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
在我的电脑上,这个解决方案似乎运作良好,但我仍然无法确定它是否合适..
编辑:多进程,而不是同一进程中的多线程。