private IEnumerable <IStreamDeckAction> GetActionInstances(string actionUUID, string context, bool allowCreate) { var client = new StreamDeckClientWrapper(this, pluginUUID, context); var instanceKey = new ActionInstanceKey(actionUUID, context); if (!actionInstances.TryGetValue(instanceKey, out var instance)) { if (allowCreate) { instance = eventHandlerFactory.CreateAction(actionUUID, client); actionInstances.Add(instanceKey, instance); yield return(instance); } } else { yield return(instance); } foreach (var monitor in eventHandlerFactory.CreateEventMonitors(client)) { yield return(monitor); } }
private void RemoveActionInstance(string actionUUID, string context) { var instanceKey = new ActionInstanceKey(actionUUID, context); if (!actionInstances.TryGetValue(instanceKey, out var action)) { return; } action.Dispose(); actionInstances.Remove(instanceKey); }