У клонированного кэшированного элемента проблемы с памятью

StackOverflow https://stackoverflow.com/questions/2542908

Вопрос

у нас есть значения, хранящиеся в кэше-блоке кэширования корпоративной библиотеки.Средства доступа к кэшированному элементу, который представляет собой список, изменяют значения.Мы не хотели, чтобы это повлияло на кэшированные элементы.

Следовательно, сначала мы вернули новый список (IEnumerator элемента CachedItem) Это гарантировало, что добавление и удаление элементов средствами доступа мало повлияло на исходный элемент в кэше.

Но мы обнаружили, что все экземпляры Списка, которые мы вернули в accessors, были ЖИВЫМИ!Объектно-реляционный график показывает взаимосвязь между этим списком и Enterprise Library.Элемент кэша.

Поэтому мы изменили возвращаемый файл на недавно клонированный список.Для этого мы использовали LINQ скажем (из элемента в Data выберите новый класс данных(item)).ToList() даже когда вы делаете, как описано выше, ORG показывает, что существует связь между этим списком и CacheItem.

Можем ли мы что-нибудь сделать, чтобы создать КЛОН элемента списка, который присутствует в кэше корпоративной библиотеки, который НЕ имеет НИКАКОГО отношения к КЭШУ?!

Нет правильного решения

Другие советы

Вам нужно будет создать глубокий клон списка, т. е. добавить клон каждого объекта в списке (и клонировать любые объекты, которые они могут содержать, я бы предложил использовать метод Clone(), чтобы сделать это за вас), в новый список.Как было прокомментировано выше, ссылка остается ссылкой независимо от того, сколько раз вы ее копируете.

Вот как мы клонируем элементы, извлекая их из кэша.Объекты должны быть помечены как сериализуемые.

        using (MemoryStream buffer = new MemoryStream())
        {
            BinaryFormatter formatter = new BinaryFormatter();
            formatter.Serialize(buffer, objectToClone);
            buffer.Position = 0;
            object temp = formatter.Deserialize(buffer);
            return temp;
        }
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top