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