マルチプロセスで読み書きされるtxtファイルABC.txtがあります。そのため、1 つのプロセスがファイル ABC.txt を読み書きしている場合、ファイル ABC.txt をロックして、他のプロセスが読み書きできないようにする必要があります。enum 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
私のコンピューターでは、この解決策はうまく機能しているように見えますが、それが適切かどうかはまだわかりません..
編集:同じプロセス内のマルチスレッドではなく、マルチプロセス。