Сериализация больших объектов
{
public SortedList<uint, Node> NodeList;
public SortedList<uint, int> IndexCount;
}
Дерево не высокое, но широкое. Гига 4 оперативы может жрать. И все это нужно скинуть на жесткий диск.
Получаю следующий exception:
The internal array cannot expand to greater than Int32.MaxValue elements.
Я правильно понимаю, что мой объект слишком большой? Можно ли обойти эту ошибку без расписывания дерева в линейную структуру с индексами?
Ошибка в том, что слишком много элементов в массиве, работать тебе придется не как с массивом, а действовать через указатели, но оставаясь в рамках дерева.
Тестировал я на 64 битах, а вот разработка ведется при параметре платформы "ANY CPU". В студии тоже надо исправить этот параметр?
Здесь я не понял, извиняйте)) Можно тоже самое другими словами?
В студии я не знаю где и что менять ибо не люблю поделки от микрософта и программирую не на их платформах. Наверно где-то директиву на х64 надо поставить или что-то подобное.
Здесь я не понял, извиняйте)) Можно тоже самое другими словами?
Ты создаешь массивом, в котором тысяча записей, хотя максиму полтысячи. Поэтому и ругается.
Как уйти от этой проблемы? Можно организовать свой "массив" с блекджеком и указателями на следующий/предыдущий элемент. Что-то на подобии списков.
Получаю следующий exception:
The internal array cannot expand to greater than Int32.MaxValue elements.
Слишком много объектов в дереве (имеется в виду вообще объектов, а не узлов). По видимому какая-то внутренняя структура данных (Hashtable) двоичного сериализатора попыталась выделить слишком большой массив бакетов.
Такого рода объекты нужно сериализовывать вручную - работать будет быстрее, занимать места будет меньше.
Товарищ, никто не интересовался тут твоим мнением. Не программируешь на дотнете - милости просим в другие форумы.
Если не знаешь способы решения задачи, то хотя бы не стоит писать бредовые сообщения, не так ли?