映射活动实例并在释放后删除

本文关键字:释放 删除 活动 实例 映射 | 更新日期: 2023-09-27 18:30:55

我有一个动态数量的控制,我需要在运行时为某些控件实例(标签、按钮、复选框等)生成一个唯一标识符。
为此,我有一个函数来浏览我的主体 UserControl,并且对于每个"有效"控件实例,将使用函数 RuntimeHelpers.GetHashCode(<myinstance>); 生成一个标识符。所以我获得一个 ID 并将其保存到由以下人员组成的哈希表中:

键:ID - 值:字符串

问题是,当实例被销毁时,我需要删除哈希表中添加的键,否则哈希表只会增长,因为它保留了已释放对象的 ID。
我不确定我所做的是否是解决此类问题的最佳方法,但我认为是针对我的特定情况的良好解决方案;所以我想知道的是是否存在更有效的方法,或者是否存在一种知道何时将释放 Control 实例的方法(不覆盖每个控件的 Dispose 方法)。

映射活动实例并在释放后删除

Control 类中有一个名为 Disposed 的事件,该事件在调用控件的 Dispose 函数时触发。可以为创建的每个控件处理此事件,以便在释放控件时收到通知,然后从哈希表中删除相应的 ID。