public static bool Remove(string sign)
 {
     lock (_Lock)
     {
         AutoValue val;
         if (!_Dict.TryGetValue(sign, out val)) return false;
         if (--(val.RefCount) == 0)
         {
             _Dict.Remove(sign);
             return true;
         }
         _Dict[sign] = new AutoValue(val.RefCount, val.Sequence);
         return false;
     }
 }
 public static long AddSign(string sign)
 {
     lock (_Lock)
     {
         AutoValue val;
         if (!_Dict.TryGetValue(sign, out val))
         {
             ++_NextSequence;
             _Dict.Add(sign, new AutoValue(1, _NextSequence));
             return _NextSequence;
         }
         _Dict[sign] = new AutoValue(++(val.RefCount), val.Sequence);
         return val.Sequence;
     }
 }
Ejemplo n.º 3
0
 public static long AddSign(string sign)
 {
     lock (_Lock)
     {
         AutoValue val;
         if (!_Dict.TryGetValue(sign, out val))
         {
             ++_NextSequence;
             _Dict.Add(sign, new AutoValue(1, _NextSequence));
             return(_NextSequence);
         }
         _Dict[sign] = new AutoValue(++(val.RefCount), val.Sequence);
         return(val.Sequence);
     }
 }
Ejemplo n.º 4
0
 public static bool Remove(string sign)
 {
     lock (_Lock)
     {
         AutoValue val;
         if (!_Dict.TryGetValue(sign, out val))
         {
             return(false);
         }
         if (--(val.RefCount) == 0)
         {
             _Dict.Remove(sign);
             return(true);
         }
         _Dict[sign] = new AutoValue(val.RefCount, val.Sequence);
         return(false);
     }
 }