public static void GenerateUniqueKey(int Count) { int i = 0; while (i < Count) { int Key = GetUniqueKey(true); //비유효 키가 아니면 if (Key != Const.Invalidkey) { ReturnedKeySet.Enqueue(Key); ++i; } else { continue; } } }
public static int GetUniqueKey() { //이미 발행되어진 키 값중 반환된 값이 있을 경우 if (ReturnedKeySet.Count > 0) { int Key; bool IsSuccess = ReturnedKeySet.TryDequeue(out Key); if (IsSuccess == true) { return(Key); } else { return(Const.Invalidkey); } } //없을 경우 새로 발행 else { return(Interlocked.Increment(ref KeyCount)); } }
public static void ReturnUniqueKey(int PublishedUniqueKey) { ReturnedKeySet.Enqueue(PublishedUniqueKey); }