public void LockTest2() { var userCount = 1 * 1000; var storageMaxCount = userCount; var cache = new TestCacheUserStorage(storageMaxCount); cache.BeginUnloadCount = int.MaxValue; cache.StopUnloadCount = int.MaxValue; cache.CreateUsers(userCount); var users = cache.GetAllUsers(); var request = new CacheRequest() { ObjectId = users.First().Id }; CacheLock lockObj = null; var thread1 = new Thread(() => { var user1 = cache.Write(request); lockObj = user1.Response.Lock; Thread.Sleep(10 * 1000); }); thread1.Start(); // ждем блокировки TestHelper.WaitTrue( () => lockObj != null, TimeSpan.FromSeconds(2)); Assert.True(lockObj.IsLocked); // убедимся, что заблокировать объект НЕ получится Assert.False(lockObj.TryEnter(TimeSpan.FromSeconds(1))); }