По сути, я читаю несколько XML-файлов, восстанавливая некоторые элементы из этого, затем следующий файл, пока все файлы не будут созданы, а затем я делаю свою вещь на собранных элементах.
Проблема в том, что каждый файл составляет ~ 50 МБи у меня может быть до 70, чтобы выполнить одну операцию, плюс при каждом использовании памяти цикла (в инспекторе Visual Studio) удары ~ 180 МБ (около 800 МБ памяти для 5 файлов), поэтому у меня никогда не будет достаточно оперативной памяти, памятиПревышено количество ошибок и все такое ...
Я думал об использовании возврата дохода для работы с каждым элементом в том виде, в каком он есть, но мне нужно отсортировать их все, прежде чем работать с ним.
ВотПример кода, если он помогает, попытался установить для моего документа значение null, как было найдено в некоторых ответах на SO, но безуспешно ...
class MyClass
{
List<string> sourceFiles // All my XML input files
List<XElement> listItem // items to get from XML files
/...
static void FillListItem()
{
bool found = false;
foreach (var sourceFile in sourceFiles)
{
XDocument xdoc = XDocument.Load(sourceFile);
foreach (var inventory in xdoc.Descendants("INVENTORY"))
{
if (/*Checks if current item is valid*/)
{
try
{
//...
listItems.Add(inventory);
found = true;
}
catch (Exception e)
{
Logs.LogReject(Filenames.rejectInvalid, inventory, e);
continue;
}
}
else Logs.LogReject(Filenames.rejectConfig, inventory);
}
xdoc = null; //doesn't seem to change anything...
if (!found)
Logs.LogInfo("No corresponding field in " + sourceFile);
}
}
}