public void Sweep() { DateTime?nextUpdate = _cache.Get <string, DateTime?>(NEXT_UPDATE_CACHE_KEY, ctx => { ctx.Monitor(_signals.When(NEXT_UPDATE_CACHE_KEY)); return(_clock.UtcNow.AddHours(6)); }); string oldFiles = _cache.Get <string, string>(MODEL_FILES_HASH_CACHE_KEY, ctx => { ctx.Monitor(_signals.When(MODEL_FILES_HASH_CACHE_KEY)); return(getNewBlockModelFilesHash()); }); if (_clock.UtcNow > nextUpdate.GetValueOrDefault()) { _signals.Trigger(NEXT_UPDATE_CACHE_KEY); _modelService.CheckModels(); //Removes models over 3 months (set in SQL SP) string newfiles = getNewBlockModelFilesHash(); if (oldFiles != newfiles) { _signals.Trigger(MODEL_FILES_HASH_CACHE_KEY); _projectService.EmailAllProjectOwners("New Model Uploaded", "A new model has been uploaded, and is ready for import into a project into NKD."); } Logger.Information(string.Format("Successfully updated old models (synchronisation completed).", DateTime.UtcNow.ToLongDateString())); } }