我有一个 A 类,为其他 B、C 类等提供位图。
现在,A 类将其位图保存在环形队列中,因此一段时间后它将失去对该位图的引用。
当它仍在队列中时,同一个位图可以由多个类检出,这样,B 和 C 都可以保存对此同一个位图的引用。但也可能发生只有其中一个人检查了位图,甚至没有人检查过该位图的情况。
当 A、B 或 C 不再需要位图时,我想将其处理掉。
我想我必须让 B 和 C 在完成使用时以某种方式负责发出信号,但我不确定整体逻辑。
如果是对类似 DisposeIfNowOrphan() 的调用,则在本例中将被调用三次:
1 - 当位图被踢出 A 类队列时
2 - 当 B 完成时
3 - 当 C 完成时
如果这是最好的策略,我如何评估孤儿状态?
任何建议将非常受欢迎。
让 A 类提供包装类而不是直接提供位图。包装类本身应该实现 IDisposable 并可用于维护计数器。每个消费者都可以获得自己的包装器,该包装器引用相同的位图。 A 类保留所有位图和所有包装器的陷阱。在 A 类中使用 WeakReference 来跟踪包装器,因此如果使用者不调用 dispose,它将被 GC 处理,并且提供者可以知道它不再被引用。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)