public void Dispose() { lock (disposedLocker) { if (!disposed) { disposed = true; ShutDown(); allThreadsIdleNotifier.Close(); GC.SuppressFinalize(this); } } }