Требуется такая логика работы:
Есть некий объект ResourceManager. По первому требованию от клиентского кода ResourceManager создёт некотрый объект Resource. Последующие запросы этого же ресурса другими клиентами возвращают тот же объект Resource. Когда все клиенты освободили ссылки на ресурс, объект Resource должен освободить занимаесые им физические ресурсы.
Проблема в реализации последнего требования: клиенты не имеют права вызывать Dispose у объекта Resource (ресурс совместно используется несколькими независимыми клиентами), а GC может вообще никогда не добраться до объекта Resource. Хотелось бы чтобы Resource освободил физические ресурсы сразу после исчезновения последного клиента.