protected override void Dispose(bool disposing) { if (State == CursorState.Done) { return; } if (disposing) { Ch.Dispose(); _currentCursor?.Dispose(); } base.Dispose(disposing); }
protected override void Dispose(bool disposing) { if (_disposed) { return; } if (disposing) { Ch.Dispose(); _currentCursor?.Dispose(); } _disposed = true; base.Dispose(disposing); }
protected override bool MoveNextCore() { // Iterate sub cursor or move to the next file. while (_subCursor == null || !_subCursor.MoveNext()) { // Cleanup old sub cursor if (_subCursor != null) { _subCursor.Dispose(); _subCursor = null; } if (!TryGetNextPathAndValues(out string path, out string relativePath, out List <string> values)) { return(false); } IDataLoader loader = null; try { // Load the sub cursor and reset the data. loader = _parent.CreateLoaderFromBytes(_parent._subLoaderBytes, new MultiFileSource(path)); } catch (Exception e) { Ch.Warning($"Failed to load file {path} due to a loader exception. Moving on to the next file. Ex: {e.Message}"); continue; } _subCursor = loader.GetRowCursor(_subActivecolumnsNeeded); try { UpdateSubGetters(); UpdateColumnValues(relativePath, values); } catch (InvalidOperationException e) { // Failed to load this file so skip. Ch.Warning(MessageSensitivity.Schema, e.Message); if (_subCursor != null) { _subCursor.Dispose(); _subCursor = null; } } } return(true); }
protected override bool MoveNextCore() { Ch.AssertValue(_currentCursor); while (!_currentCursor.MoveNext()) { // Mark the current cursor as finished. _currentCursor.Dispose(); _currentCursor = null; if (++_currentSourceIndex >= Sources.Length) { return(false); } _currentCursor = Sources[_currentSourceIndex].GetRowCursor(c => IsColumnActive(c)); _currentIdGetter = _currentCursor.GetIdGetter(); } return(true); }