/// <summary> /// Fügt einen neuen Eintrag hinzu. /// </summary> /// <param name="syncClass">der neue Eintrag</param> public void Add(SyncClass syncClass) { //Schon angeknüpft if (syncClass.Id != -1) { throw new ArgumentException(); } //Eintrag erstellen if (EmptyEntries.Count > 0) { var id = EmptyEntries.Dequeue(); Registred[id] = syncClass; syncClass.Id = id; } else { var id = Registred.Count + 1; if (id < 0) { throw new OverflowException(); } Registred.Add(syncClass); syncClass.Id = id; } }
/// <summary> /// Eintfernt einen Eintrag wieder. Er kann nicht mehr über diesen Manager syncronisiert werden. /// </summary> /// <param name="syncClass">der zu entfernende Eintrag</param> public void Remove(SyncClass syncClass) { var id = syncClass.Id; Registred[id] = null; EmptyEntries.Enqueue(id); //Die ID kann später wiederverwendet werden. syncClass.Id = -1; }