У меня есть exe, который вызывается несколько раз в секунду, и внутри этого exe есть функция, которая записывает в текстовый файл в виде журнала.
Это мой класс ведения журнала:
public static class Log
{
private static ReaderWriterLockSlim lock_ = new ReaderWriterLockSlim();
public static void Output(string Input)
{
string MyDocuments = Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments);
string logPath = @MyDocuments + "\\SCV";
lock_.EnterWriteLock();
Directory.CreateDirectory(logPath);
string logFilePath = @logPath+"\\SCVLog -" + DateTime.Today.ToString("MM-dd-yyyy") + "." + "txt";
FileInfo logFileInfo = new FileInfo(logFilePath);
DirectoryInfo logDirInfo = new DirectoryInfo(logFileInfo.DirectoryName);
if (!logDirInfo.Exists) logDirInfo.Create();
try
{
using (FileStream fileStream = new FileStream(logFilePath, FileMode.Append))
{
using (StreamWriter log = new StreamWriter(fileStream))
{
log.WriteLine(Input);
}
}
}
finally
{
lock_.ExitWriteLock();
}
}
}
Я называю это так:
Log.Output(finalFile + " processed");
Кажется, что класс ведения журнала является потокобезопасным, однако я все равно получаю эту ошибку:
Процесс не может получить доступ файл, потому что он используется другим процессом
Что еще мне нужно сделать, чтобы сделать этот поток безопасным?