public void Close() { lock (this) { if (closed) { return; } } // wake up any pending dequeue() call on the dispatcher dispatcher.Close(); lock (this) { closed = true; } }