.NET ImageList 实现中的 ImageList 容量错误?

2024-03-15

我在 .net 应用程序中为 ListView 使用 ImageList 时遇到一些问题。在我的实现中,这个 ImageList 根据使用情况可以容纳几千个图像。这个问题最初是在我尝试处理大量图像时出现的。当我超过 5K+ 图像时,我在尝试添加图像时遇到了通用的“图像无法添加到 ImageList”异常。发生此故障的确切数字略有波动。

因此,在尝试解决此问题时,我尝试使用本机 ImageList_SetImageCount 函数来扩展 ImageList 的容量。这很好,解决了我眼前的问题。我必须使用 ImageList[index] = image 而不是 .Add() 方法来填充列表。 这一切都很好,但是当需要拉出图像时,问题就出现了。现在,每当我通过索引引用该 ImageList 中的图像时,都会出现内存不足异常。位图 x = ImageList[任何索引] 会崩溃。

我尝试过多种不同的方法,但仍然遇到 ImageList 的问题。

在我最后一次尝试进一步探讨这个问题时,我整理了以下一段测试代码,但它的行为仍然很奇怪!

    private void Form1_Load(object sender, EventArgs e)
    {
        list = new ImageList();
        list.ImageSize = new Size(128, 128);
        list.ColorDepth = ColorDepth.Depth32Bit;
        Image[] images = new Image[10];
        for (int y = 0; y < 10; y++)
        {
            images[y] = new Bitmap(@"Path to loading_photo.png");
        }
        for (int x = 0; x < 750; x++)
        {
            list.Images.AddRange(images);
        }

        list.Images[12] = new Bitmap(@"Path to another.png");

最后一行崩溃并出现“图像无法添加到 ImageList”错误。奇怪的是,将第二个循环设置为较低迭代(即添加 2000 个图像总共 200 个),它的表现就很好。

我不知道.net 中的 ImageList 是否有一定的阈值?任何帮助将不胜感激。


我无法通过发布的代码得到任何重现。然而重要的是要认识到 ImageList 使copy位图的。所以你应该在添加位图后调用它的Dispose()方法。如果您不这样做,那么您将面临严重的风险,即您将耗尽非托管内存,这些内存将被位图数据消耗,并且当垃圾收集器运行频率不足以在您之后进行清理时,将导致致命的风险。这不适用于代码片段,因为只有 10 个位图。

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

.NET ImageList 实现中的 ImageList 容量错误? 的相关文章

随机推荐

  • 如何在PyQt5应用程序中显示来自moviepy的write_audiofile的转换进度?

    我想使用 moviepy 库中的 write audiofile 函数将 mp4 文件转换为 mp3 文件 并使用进度条在 PyQT5 应用程序中显示进度 当我使用时 mp4audio write audiofile filename lo
  • 网格单元格的边框在本机反应中并不统一

    我正在尝试使用 React Native 构建一个简单的计算器 I created a button component with borderWidth 0 5 and used this button component to form
  • 如何构建具有独立推理和训练部分的 TF 图?

    参考文献这个帖子 https stackoverflow com questions 40340807 how can i build a tf graph for both training and inference with tf t
  • 将枚举与字符串写入包裹

    我有这样的 Parcelable 枚举 public enum Option implements Parcelable DATA BASE TRIPS BIG PHOTOS OLD PHOTOS FILTERS IMAGES CATEGO
  • URL 变量中间的问号

    如果我有一个要传递 URL 的变量 并且其中有一个问号 我是否只需要转义该问号 如果没有 我怎样才能确保它像预期的那样通过 问号 URL 编码为 3F 但是您应该对整个事情使用适当的编码器 而不是手动编码字符
  • Google Chrome 地址栏在调整大小时消失

    在 MacOS Yosemite 上运行最新版本的 Google Chrome 版本 41 0 2272 101 64 位 时 当我调整地址栏大小时 地址栏会松开 并且必须重新启动 Google Chrome https www youtu
  • 如何计算图像有无噪声和几何畸变?

    我需要在 iPhone 中制作一个应用程序 需要计算图像中的噪声 几何变形和其他扭曲 这个怎么做 我用 opencv iphone 做了一些图像处理的东西 但我不知道如何计算这些参数 1 如何计算图像中的噪声 2 什么是几何变形以及如何计算
  • 如何在 iPhone 中显示 .tiff 图像?

    我想在我的本机 iphone 应用程序中显示来自服务器的 tiff 图像 是否可以在本机 iPhone 应用程序中显示 tiff 图像 我花了 2 个小时试图解决这个问题 但没有成功 我在网上搜索了近2个小时 没有解决这个问题 谁能帮我解决
  • 使用占位符时 PDO 执行速度较慢

    我正在制作一些返回计数和分组结果的 JSON 端点 对于此端点 我使用 PDO 和命名占位符 当使用命名占位符时 PHP 响应最多需要 6 秒的时间execute阶段 当执行相同的查询并将值直接放入查询中时 响应几乎是即时的 我正在更新仍使
  • 如何将openSSL生成的RSA公钥加载到RSACryptoServiceProvider中?

    我正在编写一个 Net 类 它从我们的中央身份验证服务器读取 cookie 它包含 UserId 一些时间戳和由 openssl sign 使用 2048 位 RSA 密钥和 SHA1 哈希创建的签名 当前的公钥在服务器上以 openssl
  • 调试器如何只查看变量的值而不是内存地址

    最近 我一直在 Visual Studio 中广泛使用结构和类 它们中的大多数都有很多值 这使得它们在调试时很难在监视窗口中跟踪 因为监视窗口和浮动监视窗口 您可以pin 不知道准确的术语 始终显示内存地址 这会模糊值的视图 有没有办法让监
  • Grunt 未定义

    刚开始使用 grunt 当我跑步时grunt我收到这个错误 Loading Gruntfile js tasks ERROR gt gt ReferenceError grunt is not defined 这是我的 Gruntfile
  • 在 UWP 应用程序中,如何重现异常,告知仅在非 UI 线程上允许同步 UI

    我无法弄清楚不同类型的线程在 UWP 应用程序中的行为方式 首先 在 UWP 中 UI 线程似乎不是主线程 而是工作线程之一 当我在事件处理程序中插入断点等时 我在调试器中看到了这一点 我的假设是CoreApplication MainVi
  • 为什么这段代码可以用 eclipse 编译器编译,但不能用 javac (maven) 编译

    诸如此类的问题还有很多 我经历了其中的大部分 但实际上没有 但我无法想出任何答案 我的 GWT GWTP 课程之一遇到了一个奇怪的问题 该类可以使用 Eclipse 编译器正常编译 但使用 javac 编译器 Maven 则编译失败 add
  • JavaScript 警报弹出表单

    我已经搜索了整个网站和谷歌 但找不到它 所以 就在这里 我想要一种在使用警报时显示表单的方法 例如 当用户单击 发布 时 会弹出一个对话框 询问用户一些问题 例如 html 表单 并允许用户单击 提交 重置 或 取消 而无需加载新页面 我已
  • 在 R 中保存工作区图像

    在 R 会话结束时关闭 R Studio 时 系统会通过对话框询问我 将工作区图像保存到 工作目录 吗 这意味着什么 如果我选择保存工作区图像 它保存在哪里 我总是选择不保存工作区图像 保存它有什么缺点吗 我查看了 stackoverflo
  • Android Studio 更新后 AVD 无法启动

    在我安装了最近发布的 921MB 更新后 我的 AVD 不再启动 我不太记得更新的实体 可能是 API SDK 修订版 我在 Debian 上使用 Android Studio 2 3 版本 AI 162 4069837 和 API 25
  • 是否可以在没有重定向服务器的情况下使用 OAuth 2.0?

    我正在尝试创建一个与 SurveyMonkey API 交互的基于 Java 的本地客户端 SurveyMonkey 需要使用 OAuth 2 0 的长期访问令牌 我对此不太熟悉 我已经在谷歌上搜索了几个小时 我认为答案是否定的 但我只是想
  • 如何在 Notepad++ 中使用富文本?

    我喜欢Notepad 但有时我需要将一些单词设置为粗体或草书 更改字体大小等 在 Notepad 中可以吗 我们可以突出显示文本 右键单击文本Style Token gt Using 1st Style通过使用这个我们可以突出显示文本 最多
  • .NET ImageList 实现中的 ImageList 容量错误?

    我在 net 应用程序中为 ListView 使用 ImageList 时遇到一些问题 在我的实现中 这个 ImageList 根据使用情况可以容纳几千个图像 这个问题最初是在我尝试处理大量图像时出现的 当我超过 5K 图像时 我在尝试添加