「作成に費用がかかる」データを読み取ってキャッシュする、頻繁に使用される.Net 3.5アプリケーションがあります。ただし、キャッシュ ファイルの読み取りとキャッシュ ファイルへの書き込みの両方で多くのエラーが発生しています。StackOverflow フォーラムから得たアドバイスには次のようなものがあります。
- を。「FileShare.Read」モードでファイルを読み取り、「FileShare.ReadWrite」モードでファイルに書き込みます。(システムが読み取り/書き込み操作を行っているときに、「FileAccess」モードを使用する必要があります。)
- b. 各読み取りおよび書き込み操作の後に「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();
}
}