C# 引用计数

MDK*_*MDK 6 .net c# dictionary reference

我正在寻找一种很好的模式来在 C# 中实现引用计数。我有一个

Dictionary<string, MyObject> ObjList;
Run Code Online (Sandbox Code Playgroud)

我想要做的是分发对MyObject实例的引用(如果它们存在),如果它们不存在则创建新的引用。我的代码中的多个地方可能会引用一个MyObject实例,但是当所有地方都被释放时,我想将它从我的字典中删除。我已经调查过了,WeakReference但我不确定它是否适用于这里??

编辑 1.) 细节我使用的是OPC服务器,所以每当我引用一个项目时,我都想使用字典来查找对该项目的现有引用。当我不再需要该项目时,我想取消订阅该项目。要知道我的代码中当前何时或有多少地方正在使用该项目并不容易。

erd*_*mke 6

我在这些场景中所做的是创建一个WeakReferences. a 的WeakReference作用是允许您的字典引用一个实例MyObject而不将该实例保留在内存中。因此,一旦释放了对该对象的所有其他引用,该项目的条目仍将存在于字典中。但是,该条目将引用WeakReferencewhere IsAliveisfalse和 the Targetis null。如果需要,您可以偶尔通过删除所有WeakReference不活跃的条目来清理字典。