我们有一个大量使用的 .Net 3.5 应用程序,它读取“创建成本高”的数据并将其缓存。但是,我们在读取缓存文件和写入缓存文件时遇到了很多错误。我从 StackOverflow 论坛得到的一些建议是:
- 一个。以“FileShare.Read”模式读取文件并以“FileShare.ReadWrite”模式写入文件。(系统在进行读\写操作时应该使用什么“文件访问”模式。)
- 湾。在每次读写操作后使用“GC.Collect”。(在每次读写操作后执行此操作对性能有何影响。)
这是读写文件的正确方法吗?请指教。
private XmlDocument ReadFromFile(string siteID, Type StuffType)
{
XmlDocument result = null;
var fsPath = FileSystemPath(siteID, StuffType.Name);
result = new XmlDocument();
using (var streamReader = new StreamReader(fsPath))
//using (var fileStream = new FileStream(fsPath, FileMode.Open, FileAccess.Read, FileShare.Read))
{
result.Load(streamReader);
}
//GC.Collect();
return result;
}
private readonly object thisObject = new object();
private void WriteToFile(string siteID, XmlDocument stuff, string fileName)
{
var fsPath = FileSystemPath(siteID, fileName);
lock (thisObject)
{
//using (var fileStream = new FileStream(fsPath, FileMode.Open, FileAccess.Read, FileShare.ReadWrite))
using (var streamWriter = new StreamWriter(fsPath))
{
stuff.Save(streamWriter);
}
//GC.Collect();
}
}