调用Imaging.CreateBitmapSourceFromHIcon后,Icon可以安全地处理吗?

时间:2015-03-13 13:36:25

标签: c# .net wpf idisposable

对于一个用户控件,其中显示了文件路径和一组给定文件的关联文件图标,我们提取这些文件的Icon并创建ImageSource个实例供以后使用。

大致是:

FileIcons aIcon = new FileIcons(filePath);
System.Drawing.Icon i = aIcon.GetSmallIconWithTypeName(isFolder, out typeName);
ImageSource imgSource = Imaging.CreateBitmapSourceFromHIcon(i.Handle, Int32Rect.Empty, BitmapSizeOptions.FromEmptyOptions());

不相关但仅供参考:FileIcons类使用Shell32.dll的SHGetFileInfo和ExtractIconEx来获取Icon。

有趣的部分是在致电Imaging.CreateBitmapSourceFromHIcon(...)之后:

我可以安全.Dispose() Icon ImageSource创建了ImageSource并且之后继续使用{{1}}吗?

感谢您的帮助,

1 个答案:

答案 0 :(得分:2)

你可以,位图和图标之间没有链接,前者是一个独立的内存中图像,但不是后者。

不要忘记为DestroyIcon()调用i