public void Dispose() { lock (disposedLocker) { if (!disposed) { disposed = true; resetEvent.Close(); resetEvent = null; manager.workers.Remove(this); GC.SuppressFinalize(this); } } }