namespace OASystem.API.OAMethodLib.SignalR.Hubs { /// /// 分组 /// public static class GroupStore { public static Dictionary> Groups = new Dictionary>(); public static void Add(string groupname, string Id) { if (Groups.ContainsKey(groupname)) { if (Groups.TryGetValue(groupname, out var values)) { if (values.Contains(Id)) return; values.Add(Id); } else { throw new Exception("Add group Error"); } } else { var newvalues = new List() { Id }; Groups.Add(groupname, newvalues); } } public static void Remove(string groupname, string Id) { if (Groups.ContainsKey(groupname)) { if (Groups.TryGetValue(groupname, out var values)) { if (!values.Contains(Id)) return; values.Remove(Id); if (!(values.Count > 0)) Groups.Remove(groupname); } else { throw new Exception("Remove group Error"); } } } /// /// 连接断开时删除 /// /// public static void UnConnection(string Id) { Groups.Where(x => x.Value.Contains(Id)).AsParallel().ForAll(x => x.Value.Remove(Id)); } } }