다음 두 코드 블록을 사용하면 두통이 생깁니다.FileStream 읽기 및 쓰기 용 파일 잠금 C#
using 문에서 잠금을 제공하는 파일 스트림을 사용하고 있기 때문에 실제로 논리적으로 작동해야합니다. StreamWriter를 만드는 줄이되면 "파일에 쓸 수 없습니다."라는 메시지가 나타나지 않습니다.
내 프로그램이 다중 스레드 응용 프로그램입니다. 모든 스레드가이 파일에 쓰려고 시도 할 수 있습니다. 프로그램을 잠그고 내용을 읽고 내용을 확인한 다음 변경 내용을 다시 작성해야합니다. 이 프로세스 중에는 다른 스레드가 해당 파일에 액세스 할 수 없어야합니다.
using (var fs = File.Open(fileLoc, FileMode.Open, FileAccess.ReadWrite, FileShare.None))
{
var sr = new StreamReader(fs);
var str = sr.ReadToEnd();
var strArray = str.Split(',');
if (strArray.Any(st => st == text))
{
return;
}
sr.Close();
var sw = new StreamWriter(fs);
sw.Write(str + text);
sw.Flush();
sw.Close();
}