public void LazyCache() { var indexer = new LazyIndexer <int, InternalObject>((id) => { return(new InternalObject(id)); }); const int instanceCount = 20; Parallel.For(0, instanceCount, (id) => { //以下代码是在并发状态下运行1000次获取实例的代码,主要测试 //LazyIndexer.Init在并发状态下也能正常工作 Parallel.For(0, 1000, (j) => { var obj = indexer.Get(id); }); }); Assert.AreEqual(indexer.Keys.Length, instanceCount); var halfInstanceCount = instanceCount / 2; //减去一半 Parallel.For(0, halfInstanceCount, (id) => { Parallel.For(0, 1000, (j) => { indexer.Rmove(id); }); }); Assert.AreEqual(indexer.Keys.Length, halfInstanceCount); }