![]() |
1
11
好吧,通常不会。但这种可能性是存在的。
因此以生成子窗体和窗体订阅窗体上的单击按钮事件为例。
现在button对象将保留窗体引用。当窗体关闭/释放/设置为空时,不再需要窗体和按钮;内存被回收。 当你有一个全局结构或对象,它有一个更大的生命周期时,问题就发生了。假设应用程序对象维护一个打开的子窗口列表。因此,每当创建子窗体时,应用程序对象订阅窗体事件,以便可以对其进行标签。在这种情况下,即使在关闭/释放窗体时,应用程序对象仍保持其活动状态(非垃圾对象保存对窗体的引用),并且不允许回收其内存。当你不断创建和关闭窗口时,你的应用程序占用了越来越多的内存。因此,您需要显式取消订阅以从应用程序中删除表单引用。
所以它建议您有一个unsubscribe块(-=)来补充您的subscribe例程(+=)…但是,对于库存场景,您可以在没有它的情况下进行管理。 |
![]() |
2
0
如果对象A被挂接到对象B事件,则在收集对象A之前,不会收集对象B。 事件订阅计数为对发布服务器对象的引用。 是的,这也发生在C上,我和语言无关。 |
![]() |
msoft · 串行端口。GetPortNames()返回错误的端口名 9 年前 |
![]() |
QuangND · 查找准确位置,然后插入或添加,然后排序?哪个更好? 11 年前 |
![]() |
Kidades · 如何将一个文本文件的内容复制到另一个缩短长度的文本文件? 11 年前 |
![]() |
Kidades · 如何在Win XP中使应用程序静音? 11 年前 |
![]() |
Sunkas · 在.net 2.0中从后台调用UI线程上的方法 12 年前 |
![]() |
linquize · 委托BeginInvoke是否需要清理? 12 年前 |