Пример #1
0
 /// <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;
     }
 }
Пример #2
0
        /// <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;
        }