protected virtual void Dispose(bool disposing) { if (disposing) { Terminate(); foreach (var item in _threads) { item.Dispose(); } _semaphore.Dispose(); } }