private void SecureUpToItem(int maxItem) { maxItem = Math.Min(maxItem, Length); var itemsToRead = maxItem - BufferedItemsCount; //Console.WriteLine("SecureUpToItem: {0}, {1}, {2}", MaxItem, BufferedItemsCount, ItemsToRead); if (itemsToRead > 0) { try { var dataLength = itemsToRead * StructSize; var data = new byte[dataLength]; /* * Stream.BeginRead(Data, 0, DataLength, (AsyncState) => * { * int Readed = Stream.EndRead(AsyncState); * CachedValues.AddRange(PointerUtils.ByteArrayToArray<TType>(Data)); * }, null); */ CustomThreadPool.AddTask(0, () => { var readed = _stream.Read(data, 0, dataLength); _cachedValues.AddRange(PointerUtils.ByteArrayToArray <TType>(data)); }); } catch (Exception exception) { Console.Error.WriteLine(exception); } } }