我有两个 ASP.NET Web 应用程序。一个负责处理一些信息并写入日志文件,另一个应用程序负责读取日志文件并根据用户请求显示信息。
这是我的 Writer 代码
public static void WriteLog(String PathToLogFile, String Message)
{
Mutex FileLock = new Mutex(false, "LogFileMutex");
try
{
FileLock.WaitOne();
using (StreamWriter sw = File.AppendText(FilePath))
{
sw.WriteLine(Message);
sw.Close();
}
}
catch (Exception ex)
{
LogUtil.WriteToSystemLog(ex);
}
finally
{
FileLock.ReleaseMutex();
}
}
这是我的阅读器代码:
private String ReadLog(String PathToLogFile)
{
FileStream fs = new FileStream(
PathToLogFile, FileMode.Open,
FileAccess.Read, FileShare.ReadWrite);
StreamReader Reader = new StreamReader(fs);
return Reader.ReadToEnd();
}
我的问题是,上面的代码是否足以防止锁定在网络花园环境中?
编辑1:脏读没关系。 编辑 2:使用 new Mutex(false, "LogFileMutex") 创建 Mutex,关闭 StreamWriter