【发布时间】:2015-09-07 21:17:18
【问题描述】:
我使用 Win32 SHGetFileInfo 来获取属于某个文件的图标的句柄。有很多关于如何做到这一点的描述,也在stackoverflow上,例如:Get icons used by shell
调用该函数后,您将获得一个带有图标句柄的结构。使用静态方法 Icon.FromHandle 我可以将其转换为 System.Drawing.Icon 类的对象。此类实现 System.IDisposable。正确的用法如下:
using (Icon icon = Icon.FromHandle(shFileInfo.hIcon))
{
// do what you need to do with the icon
}
离开 using 语句后,图标对象被释放。
MSDN 在Icon.FromHandle (click to view)的描述中警告:
使用该方法时,必须使用Win32 API中的DestroyIcon方法处理掉原图标,保证资源释放。
释放此图标使用的所有资源。
问题:
Dispose() 对象是否足够,或者我应该同时调用 Dispose() 和 DestroyIcon,还是调用 DestroyIcon 而不是 Disposing 对象?
【问题讨论】:
标签: c# .net winapi icons idisposable