更快获得相关图标的方式

时间:2013-10-30 21:34:37

标签: c# wpf

方法1的数字似乎很快,它不在现实生活中,特别是如果我不使用虚拟化列表(即使它很慢)。我在IValueConverter,async中运行它们,它看起来很慢。资源管理器暂时做到但是如何?是否有更快的方式获得相关图标? 到目前为止,我已经尝试过:

方法1:

ExtractIcon.GetIcon(filename, true);

,其中

public static System.Drawing.Icon GetIcon(string strPath, bool bSmall)
        {
            SHFILEINFO info = new SHFILEINFO(true);
            int cbFileInfo = System.Runtime.InteropServices.Marshal.SizeOf(info);

            SHGFI flags;
            if (bSmall)
            {
                flags = SHGFI.Icon | SHGFI.SmallIcon | SHGFI.UseFileAttributes;
            }
            else
            {
                flags = SHGFI.Icon | SHGFI.LargeIcon | SHGFI.UseFileAttributes;
            }

            SHGetFileInfo(strPath, 256, out info, (uint)cbFileInfo, flags);
            try{
                return System.Drawing.Icon.FromHandle(info.hIcon);}
                catch{
                    return null;
                }
        }

执行188ms; (100次迭代)

方法2。

System.Drawing.Icon.ExtractAssociatedIcon(filename);

在661ms执行; (100次迭代)

0 个答案:

没有答案