public IAutoDetection GetAutoDetection(int configurationId) { cacheLock.EnterUpgradeableReadLock(); try { if (!AutoDetectionPool.ContainsKey(configurationId)) { CreateAutoDetector(configurationId); } return(AutoDetectionPool[configurationId]); } finally { cacheLock.ExitUpgradeableReadLock(); } }
public int CreateAutoDetector(int configurationId) { var configuration = GetConfiguration(configurationId); var ptfConfigStorage = configuration.StorageRoot.GetNode(ConfigurationConsts.PtfConfig); var testSuite = configuration.TestSuite; cacheLock.EnterWriteLock(); try { var autoDetector = AutoDetection.Create(configuration); AutoDetectionPool.AddOrUpdate(configurationId, _ => autoDetector, (_, _) => autoDetector); } finally { cacheLock.ExitWriteLock(); } return(configurationId); }