public void Test() { var CustomThreadPool = new CustomThreadPool(2); var Results0 = new List <int>(); var Results1 = new List <int>(); var CountdownEvent = new CountdownEvent(2); CustomThreadPool.AddTask(0, () => { Thread.Sleep(10); Results0.Add(0); }); CustomThreadPool.AddTask(0, () => { Results0.Add(1); CountdownEvent.Signal(); }); CustomThreadPool.AddTask(1, () => { Results1.Add(0); CountdownEvent.Signal(); }); CountdownEvent.Wait(); Thread.Sleep(10); Assert.True(CustomThreadPool.GetLoopIterCount(0) <= 2); Assert.True(CustomThreadPool.GetLoopIterCount(1) <= 2); Assert.Equal("0,1", Results0.ToStringArray()); Assert.Equal("0", Results1.ToStringArray()); CustomThreadPool.Stop(); }