获取关联图标的更快方法

2024-01-04

方法 1 从数字上看似乎很快,但在现实生活中却并非如此,特别是如果我不对列表使用虚拟化(即使它很慢)。我在 IValueConverter 中异步运行它们,看起来非常慢。资源管理器会立即执行此操作,但是如何执行呢?有没有更快的方法来获取关联图标? 到目前为止我已经尝试过:

方法一:

ExtractIcon.GetIcon(filename, true);

where

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 次迭代)


None

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

获取关联图标的更快方法 的相关文章

  • 使用 Xamarin.Forms 和 Zxing 生成 QR 码

    我在网上看到了很多关于这个的内容 旧帖子 但似乎没有什么对我有用 我正在尝试从字符串中生成二维码并将其显示在应用程序中 这就是我一开始的情况 qrCode new ZXingBarcodeImageView BarcodeFormat Ba
  • .pdbs 会减慢发布应用程序的速度吗?

    如果 dll 中包含 pdb 程序调试 文件 则行号将出现在引发的任何异常的堆栈跟踪中 这会影响应用程序的性能吗 这个问题与发布与调试 即优化 无关 这是关于拥有 pdb 文件的性能影响 每次抛出异常时都会读取 pdb 文件吗 加载程序集时
  • 为什么在 C++ 中声明枚举时使用 typedef?

    我已经很多年没有写过任何 C 了 现在我正试图重新开始 然后我遇到了这个并考虑放弃 typedef enum TokenType blah1 0x00000000 blah2 0X01000000 blah3 0X02000000 Toke
  • PrivateObject 找不到属性

    我的结构基本上如下所示 abstract class A protected string Identificator get set private void DoSomething DoSomethingSpecific protect
  • 关闭整数的最右边设置位

    我只需要关闭最右边的设置位即可 我的方法是找到最右边位的位置 然后离开该位 我编写这段代码是为了这样做 int POS int n int p 0 while n if n 2 0 p else break n n 2 return p i
  • 判断串口是普通COM还是SPP

    我正在寻找一种方法来确定 COM 是标准 COM 还是 SPP COM 也称为 COM 设备的电缆替换蓝牙适配器 我有一个可以在 USB COM gt USB 和蓝牙下工作的设备 并且蓝牙接口可以与 SPP 一起工作 我目前正在使用Syst
  • C 类型命名约定,_t 或 ALLCAPS

    我一直想知道是否有任何命名约定 例如何时对类型使用全部大写以及何时追加 t 什么时候不使用任何东西 我知道当时 K R 发布了各种有关如何使用 C 的文档 但我找不到任何相关内容 在 C 标准库类型中 t看起来漂亮占主导地位 time t
  • 名称查找、实例化点 (POI) 和基本类型

    以下代码针对 X 进行编译 但不适用于 double struct X void foo double void foo X namespace NN struct A void foo A foo double error foo not
  • 检测 TextBox 中的 Tab 键按下

    I am trying to detect the Tab key press in a TextBox I know that the Tab key does not trigger the KeyDown KeyUp or the K
  • 无法获取本地或参数的值,因为它在此指令指针处不可用,可能是因为它已被优化掉

    Visual Studio 2010 会删除 没有其他词 不安全块中函数参数之一中的数据 什么可能导致此错误 调试器显示以下消息 Cannot obtain value of local or argument as it is not a
  • 是否可以在Linux上将C转换为asm而不链接libc?

    测试平台为Linux 32位 但也欢迎 Windows 32 位上的某些解决方案 这是一个c代码片段 int a 0 printf d n a 如果我使用 gcc 生成汇编代码 gcc S test c 然后我会得到 movl 0 28 e
  • 将 2 个字节转换为整数

    我收到一个 2 个字节的端口号 最低有效字节在前 我想将其转换为整数 以便我可以使用它 我做了这个 char buf 2 Where the received bytes are char port 2 port 0 buf 1 port
  • C 与 C++ 中的 JNI 调用不同?

    所以我有以下使用 Java 本机接口的 C 代码 但是我想将其转换为 C 但不知道如何转换 include
  • 在 C++ 代码 gdb 中回溯指针

    我在运行 C 应用程序时遇到段错误 在 gdb 中 它显示我的一个指针位置已损坏 但我在应用程序期间创建了 10 万个这样的对象指针 我怎样才能看到导致崩溃的一个 我可以在 bt 命令中执行任何操作来查看该指针的生命周期吗 谢谢 鲁奇 据我
  • WinForms - 加载表单时如何使用 PaintEventArgs 运行函数?

    我试图理解图形 在 Graphics FromImage 文档中 它有这样的示例 private void FromImageImage PaintEventArgs e Create image Image imageFile Image
  • 使用 Unity 在 C# 中发送 http 请求

    如何使用 Unity 在 C 中发送 HTTP GET 和 POST 请求 我想要的是 在post请求中发送json数据 我使用Unity序列化器 所以不需要 新的 我只想在发布数据中传递一个字符串并且能够 将 ContentType 设置
  • 将日期时间显示为 MM/dd/yyyy HH:mm 格式 C#

    在数据库中 日期时间以 MM dd yyyy HH mm ss 格式存储 但是 我想以 MM dd yyyy HH mm 格式显示日期时间 我通过使用 String Format 进行了尝试 txtCampaignStartDate Tex
  • 对多个对象使用事件处理程序

    我有 20 件物品List
  • 如何知道 HTTP 请求标头值是否存在

    我确信这很简单 但是却让我感到厌烦 我在 Web 应用程序中使用了一个组件 它在 Web 请求期间通过添加标头 XYZComponent true 来标识自身 我遇到的问题是 如何在视图中检查此组件 以下内容不起作用 if Request
  • IDisposable 的显式实现

    虽然有很多关于IDisposable在 SO 上找到 我还没有找到答案 我通常遵循这样的做法 当我的一个班级拥有一个IDisposable对象然后它也实现IDisposable并打电话Dispose在拥有的对象上 然而最近我遇到了一个类 它

随机推荐

  • 布尔列上的 SQLAlchemy func.count

    如何轻松计算特定列所在的行数true以及它所在的号码false 我不能 或者我可以 使用 count 运行查询 因为我将此计数嵌入到having 子句中 例如 having func count Question accepted gt f
  • 没有子查询的 PostgreSQL 中占总数的百分比

    我和用户有一张桌子 每个用户都有一个国家 我想要的是获取所有国家 地区的列表以及用户数量和百分比 总数 到目前为止我所拥有的是 SELECT country id COUNT AS total COUNT 100 SELECT COUNT
  • 如何在 GAE ndb 中对唯一约束进行建模

    我想要几个 捆绑包 Mjbundle 它们本质上是问题捆绑包 Mjquestion Mjquestion 有一个整数 索引 属性 该属性需要是唯一的 但它只能在包含它的包中是唯一的 我不确定如何正确地建模这样的东西 我尝试使用下面的结构化
  • 获取Android中被替换的包的版本

    我注册了一个广播接收器 以便在发送 PACKAGE REPLACED 意图时收到通知 在onReceiver中我需要根据被替换的包的版本执行一些操作 有没有办法获取这些信息 我试过 Uri data intent getData final
  • 在 MySQL 中将列类型 TIMESTAMP 更改为 DATETIME 时会发生什么?

    我想将一个超过一百万行的表中的列数据类型从 TIMESTAMP 转换为 DATETIME 是否可以 慢吗 我会丢失旧信息还是 MySQL 可以自动转换这些信息 我可以只做一个更改表还是可以做一些不同的事情 是否可以 是的 慢吗 可能需要一段
  • JAX-RS:使用 JSON POST 数据而不将 Content-Type 标头设置为 application/json

    我已经使用 Jersey 实现了一个 REST 服务 该服务获取 JSON POST 数据并从 POJO 模型创建一个对象 但是 为了使其正常工作 我必须将 Content Type 设置为 application json 即 H Con
  • 为什么 AppDelegate.h 中的 ViewController 使用 @class 而不是 #import?

    我有一个有关 Objective C 的基本最佳实践问题 我了解以下之间的区别 class and import但我不明白为什么默认的 Apple Xcode 模板会这样做 AppDelegate h class ViewControlle
  • Model.get_model_path(model_name="model") 抛出错误:在缓存或根目录中找不到模型

    我有一个模型 我用管道注册了它 register step PythonScriptStep name Register Model source directory training folder script name register
  • iOS 6 地图偶尔崩溃

    我在使用 iOS 6 MapKit 时偶尔会崩溃 实在无法重现 什么会导致这种情况 Exception Type EXC BAD ACCESS SIGSEGV Exception Codes KERN INVALID ADDRESS at
  • wcf 服务返回“不允许的方法”错误

    我正在尝试将对象参数作为 json 格式传递给 wcf Restful 服务 像这样的服务合约代码 WebInvoke Method POST BodyStyle WebMessageBodyStyle Wrapped ResponseFo
  • 我可以在 NodeJS 中混合回调和异步/等待模式吗?

    我在互联网上寻找答案 但我无法真正找到我想要的东西 我需要知道以下代码有什么问题 前提是我们应该避免混合回调和承诺 function a callback async gt try let result await doSomething
  • 在Java中创建唯一的时间戳

    我需要在 Java 中创建一个时间戳 以毫秒为单位 并保证在该特定 VM 实例中是唯一的 IE 需要某种方法来限制 System currentTimeMillis 的吞吐量 以便它每毫秒最多返回一个结果 关于如何实现它有什么想法吗 这将给
  • 函数变量不在 Haskell 范围内

    嗨我有以下代码 import Data Maybe import Test QuickCheck import System Random rndExpr Gen Expr gt IO Expr rndExpr gen do rnd lt
  • 加速度计、陀螺仪和磁力计

    我是 Core Motion 的新手 我很困惑 有人可以简单地解释一下这些输入的测量值以及它们如何有用吗 加速度计通过 感觉 施加到设备上的运动力来测量相对于重力的运动 运动力可以描述为设备的加速度和减速度 因此该传感器得名 陀螺仪通过报告
  • ClojureScript 将一个命名空间拆分为多个文件

    我读了这个线程 https stackoverflow com questions 4690758 splitting a clojure namespace over multiple files 但好像没有load and load f
  • 是否可以使用正则表达式来解释 Excel 中支链烷烃的 IUPAC 名称?

    我需要在 Excel 中使用 IUPAC 国际纯粹与应用化学联合会 名称计算出有关支链烷烃结构的信息 我已将问题分解为多个步骤 并为每个步骤提供了示例 对于任何步骤的帮助将不胜感激 我需要自动化该方法 因为我可能有数千个这样的名称需要处理
  • 将 Coldfusion json 转换为 struct

    我有一个来自 jQuery 应用程序的 JSON 变量输出 如下所示 id 1 id 197 children id 198 id 199 id 200 id 2 children id 3 id 4 id 143 id 6 id 5 id
  • 实体框架错误 - 错误 11009: 属性“ ”未映射

    为了改进旧项目 我被迫使用 VS 2008 和 Framework 3 5 我遇到了 edmx 显示奇怪行为并且未按要求更新实体的问题 edmx 向我抛出上述错误 但是当我转到相应的表并右键单击它 从数据库更新模型 时 没有任何变化 错误仍
  • NodeJS TCP Socket不显示客户端主机名信息

    假设我创建了一个简单的 node js TCP 套接字服务器 如下所示 var server net createServer function socket socket end goodbye n listen on port 80 l
  • 获取关联图标的更快方法

    方法 1 从数字上看似乎很快 但在现实生活中却并非如此 特别是如果我不对列表使用虚拟化 即使它很慢 我在 IValueConverter 中异步运行它们 看起来非常慢 资源管理器会立即执行此操作 但是如何执行呢 有没有更快的方法来获取关联图