我正在寻找在C#中实现引用计数的好模式。我有一个…
我想做的是,如果存在
编辑1.) 具体来说,我正在使用一个OPC服务器,因此每当引用一个项目时,我希望使用字典查找现有项目的引用。当我不再需要该项目时,我想要取消订阅该项目。很难知道或者有多少地方在我的代码中当前正在使用该项目。
Dictionary<string, MyObject> ObjList;
我想做的是,如果存在
MyObject
实例,则分发对其的引用,如果不存在,则创建新的实例。我的代码中可能有多个地方引用MyObject
实例,但当所有引用都被释放时,我希望将其从字典中删除。我已经研究了WeakReference
,但不确定是否适用于此情况?编辑1.) 具体来说,我正在使用一个OPC服务器,因此每当引用一个项目时,我希望使用字典查找现有项目的引用。当我不再需要该项目时,我想要取消订阅该项目。很难知道或者有多少地方在我的代码中当前正在使用该项目。
WeakReference
可以工作,但如果您有能力显式地处理实例,我建议您直接使用它。 - Ry-MyObject
必须正确实现IDisposable
带有调用.Dispose()
的类析构函数,否则对于MyObject
的WeakReference
将无法被处理。 - Enigmativity