private void InvalidateImportCache(Guid deps, HashSet <Guid> visited) { myShellLocks.IsWriteAccessAllowed(); visited.Add(deps); myCache.RemoveFromCache(deps); foreach (var d in myDependencies.GetValuesSafe(deps)) { if (!visited.Contains(d)) { InvalidateImportCache(d, visited); } } }
private void OnDataFileChanged(Pair <IPsiSourceFile, T4FileDataDiff> pair) { if (pair.First != SourceFile) { return; } if (_shellLocks.IsWriteAccessAllowed()) { OnDataFileChanged(pair.Second); } else { _shellLocks.ExecuteOrQueue(_lifetime, "T4PsiModuleOnFileDataChanged", () => _shellLocks.ExecuteWithWriteLock(() => OnDataFileChanged(pair.Second))); } }