internal EnumerationDataChunk GetNextChunk(EnumerationPointer pointer) { EnumerationDataChunk nextChunk = null; IEnumerationProvider provider = GetProvider(pointer); if (pointer.isDisposable && provider != null) { provider.Dispose(); if (_index.ContainsKey(pointer)) { _index.Remove(pointer); } nextChunk = new EnumerationDataChunk(); nextChunk.Pointer = pointer; } else if (provider != null) { nextChunk = provider.GetNextChunk(pointer); //Dispose the provider if this is the last chunk for it if (nextChunk.IsLastChunk) { provider.Dispose(); if (_index.ContainsKey(pointer)) { _index.Remove(pointer); } } } return(nextChunk); }
/// <summary> /// Recupera o próximo pedaço. /// </summary> /// <param name="pointer">Ponteiro para o pedaço.</param> /// <returns></returns> internal EnumerationDataChunk GetNextChunk(EnumerationPointer pointer) { EnumerationDataChunk nextChunk = null; IEnumerationProvider provider = this.GetProvider(pointer); if (pointer.IsDisposable && (provider != null)) { provider.Dispose(); if (_index.ContainsKey(pointer)) { _index.Remove(pointer); } nextChunk = new EnumerationDataChunk(); nextChunk.Pointer = pointer; return(nextChunk); } if (provider != null) { nextChunk = provider.GetNextChunk(pointer); if (nextChunk.IsLastChunk) { provider.Dispose(); if (_index.ContainsKey(pointer)) { _index.Remove(pointer); } } } return(nextChunk); }