/// <summary> /// 数据取缓存,如果有缓冲中有数据且时间小于IntervalSeconds则取缓冲,否则通过generateDataMethod的返回值取得数据并存起来。 /// </summary> /// <param name="key"></param> /// <param name="generateDataMethod"></param> /// <returns></returns> public T ReadCache(string key, GenerateDataDelegate generateDataMethod) { lock (dics) { if (dics.ContainsKey(key) && (DateTime.Now - dics[key].UpdateTime).TotalSeconds < IntervalSeconds) { return(dics[key].Data); } else { var data = generateDataMethod(); UpdateCache(key, data); return(data); } } }
bool Assert(string assertId, string extension, GenerateDataDelegate generator, CompareDataDelegate comparer) { var actualPath = Path.Combine(BaseDirectory, assertId + "_actual." + extension); var expectedPath = Path.Combine(BaseDirectory, assertId + "_expected." + extension); var diffPath = Path.Combine(BaseDirectory, assertId + "_diff." + extension); if (!File.Exists(expectedPath)) { generator(expectedPath); return false; } generator(actualPath); if (comparer(expectedPath, actualPath, diffPath)) { File.Delete(actualPath); File.Delete(diffPath); return false; } return true; }