public void TryAdd() { const string value = "value"; var sharedList = new SharedList <string>(LockingStrategy); bool doInsert = false; using (ISharedCollectionLock l = sharedList.GetReadLock()) { if (!sharedList.Contains(value)) { doInsert = true; } } if (doInsert) { using (ISharedCollectionLock l = sharedList.GetWriteLock()) { if (!sharedList.Contains(value)) { sharedList.Add(value); } } } CollectionAssert.AreEqual(new List <string> { value }, sharedList.BackingList); }