我SHGetFileInfo用来获取特定文件类型的图标。MSDN 说SHFILEINFO:
图标
    类型:HICON
    代表文件的图标的句柄。你有责任
    当您不再使用 DestroyIcon 销毁此句柄
    需要它。
要从 HIcon 获取图标,我使用Icon.FromHandle. 同样,MSDN 说:
评论
使用此方法时,必须处理掉原来的图标 通过使用 Win32 API 中的 DestroyIcon 方法来确保 资源被释放。
SGHFI_ICON由于描述包含以下信息,因此更加令人困惑:
SHGFI_ICON (0x000000100)
    检索代表文件的图标的句柄和
    系统图像列表中图标的索引。手柄是
    复制到 psfi 指定结构的 hIcon 成员,
    并且索引被复制到 iIcon 成员。
从这个描述来看,这个句柄似乎是由操作系统保存的,我实际上不应该销毁它。
我的问题是:如果,如果是,我应该什么时候处理图标句柄?
- 紧接着Icon.FromHandle()?
- 当我不再需要从创建的图标时Icon.FromHandle()?(在这种情况下,我想我宁愿复制图标,释放原件并返回副本以避免处理泄漏)
- 从不(它会以某种方式自动完成?SHGetFileInfo 的许多示例 - 即使在 SO 上 - 也不包括任何释放图标句柄的代码)