public void Release(string name) { IRealtimeChannel channel = null; if (this.channels.TryGetValue(name, out channel)) { EventHandler <ChannelStateChangedEventArgs> eventHandler = null; eventHandler = (s, args) => { if (args.NewState == ChannelState.Detached || args.NewState == ChannelState.Failed) { channel.ChannelStateChanged -= eventHandler; this.channels.Remove(name); } }; channel.ChannelStateChanged += eventHandler; channel.Detach(); } }
public void WhenInitializedDetachedOrDetaching_ShouldDoNothing(ChannelState state) { SetState(state); bool changed = false; _channel.On((args) => { changed = true; }); _channel.Detach(); changed.Should().BeFalse(); }