У меня есть объект, который стоит создавать, который использует некоторые неуправляемые ресурсы, которые должны быть явно освобождены, когда это сделано, и таким образом реализовать IDisposable(). Я хотел бы, например, кеш этих дорогостоящих ресурсов, чтобы минимизировать затраты на создание, но у меня возникли проблемы с пониманием того, как справиться с этим.
Если методы, использующие объекты, несут ответственность за удаление, я заканчиваю располагаемыми экземплярами в кеше, которые затем нужно воссоздать, победив точку кеша. Если я не размещаю объекты в методах, которые их используют, они никогда не удаляются. Я думал, что могу избавиться от них, когда их вынут из кеша, но потом я мог бы удалить экземпляр, который все еще используется методом.
Действительно ли это просто позволить им выйти из сферы действия и собираться сборщиком мусора и освобождать ресурсы в этот момент? Это кажется неправильным и противоречит идее их использования...