- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我有这行代码:
System.Drawing.Icon icon = System.Drawing.Icon.FromHandle(shinfo.hIcon);
几行之后,在使用图标后我有一行:
Win32.DestroyIcon(shinfo.hIcon);
但是,当对我的代码进行静态分析时,它说图标可能存在 Resource_Leak。我想知道如果我调用 dispose 方法会有什么不同吗:
icon.Dispose();
而不是现在正在使用的 Win32.DestroyIcon()。它们之间有什么区别吗?我只是在维护这段代码,所以我不确定原始开发人员是否有任何特殊意图使用 Win32.DestroyIcon。
最佳答案
静态分析正在触发,因为您没有处理“IDisposable 资源”。
我建议始终坚持使用托管版本,并使用 icon.Dispose()
。这将(在内部)负责为您调用 DestroyIcon
,但始终坚持使用纯托管 API。
Win32.DestroyIcon
实际上更适合与您作为 IntPtr
接收的图标一起使用,而不是与 Icon
实例一起使用完全由框架管理。
关于c# - Win32.DestroyIcon 与 Icon.Dispose,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9892851/
我正在使用 LoadIconWithScaleDown() 在我的应用程序中创建图标.我也退回到CreateIconFromResourceEx()如果首选功能不可用。 DestroyIcon() 的
我有这行代码: System.Drawing.Icon icon = System.Drawing.Icon.FromHandle(shinfo.hIcon); 几行之后,在使用图标后我有一行: Wi
我使用 Win32 SHGetFileInfo 获取属于某个文件的图标的句柄。有很多关于如何做到这一点的描述,也在 stackoverflow 上,例如:Get icons used by shell
我是一名优秀的程序员,十分优秀!