public void Dispose() { if (SetDisposed()) { AutoResetEvent disposeHandle = new AutoResetEvent(false); feed_manager.Dispose(disposeHandle); enclosure_manager.Dispose(disposeHandle); if (command_queue != null) { command_queue.Dispose(); command_queue = null; } disposeHandle.Close(); } }