protected virtual void OnStartPresentation(StartOrJoinPresentation cmd, SocketSubscription sender) { var presentation = new Presentation(cmd.Name, new Presenter(sender)); if (Presentations.AddIfNew(presentation)) { presentation.Presenter.Subscription.OnDesubscribe = () => { Presentations.Remove(presentation); presentation.End(); }; sender.Connection.SendEvent(new PresentationStarted { Name = presentation.Name }); } }