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