多个进程同时读写一个文件
多个进程同时读写一个文件
我有一个名为ABC.txt的文本文件,将由多个进程进行读写。因此,当一个进程正在从文件ABC.txt读取或写入时,必须对文件ABC.txt进行锁定,以防止其他进程对其进行读写。我知道枚举System.IO.FileShare可能是处理此问题的正确方式。但是我使用了另一种方式,我不确定是否正确。以下是我的解决方案。
我在文件夹中添加了另一个文件Lock.txt。在我能够从文件ABC.txt读取或写入之前,我必须具备从Lock.txt文件中读取的能力。在我从文件ABC.txt读取或写入之后,我必须释放该能力。以下是代码。
#region 进入锁定状态
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 执行任务
// 从文件ABC.txt读取或写入
// 从其他文件读取或写入
#endregion
#region 释放锁定状态
try
{
if (lockFileStream != null)
{
lockFileStream.Dispose();
}
}
catch
{
}
#endregion
在我的电脑上,这个解决方案似乎运行良好,但我仍然不能确定是否合适。
编辑:多个进程,而不是同一进程中的多个线程。