public DataHash DigestBinaryFile(string filepath)
{
try {
recentHashLock.EnterReadLock();
if (recentHashes.ContainsKey(filepath) && recentHashes[filepath].Age.TotalMinutes < SavedHashMaxAgeMinutes)
{
return recentHashes[filepath];
}
} finally {
recentHashLock.ExitReadLock();
}
recentHashLock.EnterWriteLock();
var rv = DigestFile(filepath, false);
recentHashes[filepath] = rv;
recentHashLock.ExitWriteLock();
return rv;
}