我有一个创建成本昂贵的对象,它使用一些必须在完成时显式释放的非托管资源,因此实现IDisposable().我想要一个缓存,例如这些昂贵的资源,以便最大限度地降低创建成本,但我很难知道如何处理这些处理.
如果使用这些对象的方法负责处理,那么我最终会在缓存中放置已处理的实例,然后必须重新创建实例,从而破坏缓存的重点.如果我没有在使用它们的方法中处理对象,那么它们永远不会被处理掉.我认为当它们从缓存中取出时我可以处理它们,但是我可能最终会处理一个仍被方法使用的实例.
让它们超出范围并由垃圾收集器收集并在那时释放资源是否有效?这感觉不对,并反对他们是一次性的想法......