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; } }
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); } }
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); } }