public void Parallel_Load_On_Pool() { var policy = new PoolPolicy <ObjectPoolClassesTests.SomePoolObject> { FunctionOnCreate = () => new ObjectPoolClassesTests.SomePoolObject { Value = "created" }, ActionOnGet = o => o.Value = "get", ActionOnReturn = o => o.Value = "returned", ActionOnDestroy = o => o.Value = "destroyed", MaximumPoolSize = 100, InitialPoolSize = 1 }; var options = new ParallelOptions { MaxDegreeOfParallelism = 10 }; var pool = new ObjectPoolConcurrent <ObjectPoolClassesTests.SomePoolObject>(policy) { IsPoolingEnabled = true }; Assert.That(() => Parallel.For(0L, 1000, options, (i, loopState) => { var someObject = pool.Get(); pool.Return(someObject); }), Throws.Nothing); Assert.That(pool.CountActive, Is.EqualTo(0)); Assert.That(pool.CountInactive, Is.GreaterThan(0)); }