private void Refresh()
{
Debug.Assert(!dirty, "Refreshing even though cache is dirty");
DateTime newTimestamp = DateTime.MinValue;
long newLength = -1;
if (dataFile.Exists)
{
dataFile.Refresh();
newTimestamp = dataFile.LastWriteTime;
newLength = dataFile.Length;
}
if (timestamp != newTimestamp || length != newLength)
{
// file changed
if (!dataFile.Exists)
dataTable.Clear();
else
{
Debug.WriteLine("Loading cache from disk");
using (FileStream inStream = dataFile.Open(FileMode.Open, FileAccess.Read, FileShare.Read))
{
dataTable = Load(inStream);
}
}
}
timestamp = newTimestamp;
length = newLength;
dirty = false;
}