void Remove(IDisposable connection) { lock (this) { if (this.connection == connection) { if (--state == 0) { this.connection = new SequentialDisposable(); this.connected = false; connection.Dispose(); source.Reset(); } else { return; } } else { return; } } }