设置图标属性时,NotifyIcon内存泄漏
本文关键字:NotifyIcon 内存 泄漏 图标 属性 设置 | 更新日期: 2023-09-27 18:07:54
我试图设置notifyicon控件的图标,但每次我改变图标属性,我可以看到我的应用程序的内存增加,即使我释放图标。
这是我的代码(c#):public void CheckNotifyIcon(bool visible)
{
if (notifyIcon.Icon != null)
notifyIcon.Icon.Dispose();
notifyIcon.Icon = visible
? new Icon(Pic1, new Size(32, 32))
: new Icon(Pic2, new Size(32, 32));
notifyIcon.Visible = visible;
}
我做错了什么?
谢谢!
而不是有一个单一的NotifyIcon
和不断切换它的Icon
属性到Icon
的临时实例,我会创建两个NotifyIcon
控件,并适当地显示/隐藏它们。这样,Icon
实例在窗体的生命周期中只创建一次,而不是不断地被处理和重新创建(它们的最终处理是由WinForms设计器为您编写的管道代码为您管理的)。虽然这不会告诉您内存泄漏发生在哪里,但它应该首先避免内存泄漏。
启动Redgate的ANTS内存分析器来找出原因如何?
此外,我建议不要捕获并吃掉异常以获得更多信息。
首先,您发布的代码中没有泄漏。你处理图标,当然。net垃圾收集器不会泄漏。
在你所陈述的问题的评论中:
我只看到taskmgr.exe的内存增加,而不是
这就是你问题的根源。Windows内存管理是非常复杂的,任务管理器不是一个合适的工具来诊断泄漏。
将它与。net垃圾收集器结合起来,画面就更加混乱了。只要不影响系统的其余部分,垃圾收集器完全可以自由地保留所有已分配的内存。
检测。net中的内存泄漏是一项复杂的任务,需要专门的工具。