Вы можете хранить циклический буфер - добавляйте каждый элемент в буфер по мере его разбора (и, поскольку вы не будете разбирать все это, вы можете использовать XElement.Load
с читателем, расположенным в начале элемента) и выбрасывать старые элементы, когда вы читаете новые. Вы создадите очень много мусора, но, если повезет, большая его часть будет в gen0, поэтому проблем не будет слишком много.
Я не знаю каких-либо классов циклического буфера в основной среде, но вы могли бы либо написать универсальный класс самостоятельно, найти стороннюю библиотеку, либо просто жестко закодировать цикличность в своем коде чтения.
(Черт, вы могли бы просто использовать Queue<T>
и удалять элементы по мере необходимости ... который использует внутренний буфер, я полагаю.)