/// <summary> /// 重建数据集合 /// </summary> /// <param name="value"></param> private void create(valueType value) { try { array.value <valueType>[] newArray = new array.value <valueType> [Count << 1]; System.Array.Copy(array, 0, newArray, 0, Count); newArray[Count].Value = value; array = newArray; ++Count; } finally { Monitor.Exit(arrayLock); } }
/// <summary> /// 清除数据集合 /// </summary> /// <param name="count">保留数据数量</param> /// <returns>被清除的数据集合</returns> internal array.value <valueType>[] GetClear(int count) { Monitor.Enter(arrayLock); int length = Count - count; if (length > 0) { array.value <valueType>[] removeBuffers; try { removeBuffers = new array.value <valueType> [length]; System.Array.Copy(array, Count = count, removeBuffers, 0, length); System.Array.Clear(array, count, length); } finally { Monitor.Exit(arrayLock); } return(removeBuffers); } else { Monitor.Exit(arrayLock); } return(nullValue <array.value <valueType> > .Array); }