.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 容量错误? 的相关文章

  • 使用 F5 时,finally 似乎没有在 C# 控制台应用程序中执行

    int i 0 try int j 10 i catch IOException e finally Console WriteLine In finally Console ReadLine 在VS2008中按F5时 finally块似乎
  • Spring.NET 和构造函数拦截器

    我正在尝试在构造时对对象进行一些 AOP 并找到了 IConstructorInterceptor 这对于我想要的东西来说是完美的 但它似乎不起作用 http jira springframework org browse SPRNET 2
  • System.Drawing.Image.Save 抛出ExternalException:GDI 中发生一般错误

    我有一个函数 它需要一个位图 复制它的一部分并将其保存为 8bpp tiff 结果图像的文件名是唯一的并且文件不存在 程序有权写入目标文件夹 void CropImage Bitmap map Bitmap croped new Bitma
  • 移动/调整窗口大小时闪烁

    我开发了一个显示 jpeg 图像的应用程序 它可以显示 4 个图像 屏幕的每个象限各一个 为此 它使用了 4 个窗口 窗口没有边框 框架 也没有标题栏 当加载新图像时 窗口大小会根据新图像进行调整 然后显示该图像 尤其是当窗户做得较大时 经
  • 分层架构中的异常处理

    我们正在分层设计中重构 当然还有重新设计 我们的服务 我们有服务操作层 BLL 网络抽象层 gt 处理网络代理 数据抽象层 但我们对我们的异常处理策略有点困惑 我们不想向外界透露太多 BLL 的信息 从其他层到bll就可以了 我们不想让 t
  • 如何将智能感知添加到我的应用程序中?

    我们的一款产品拥有一种专有的宏语言 通过我们的 Windows 软件进行编辑 我想添加智能感知 但我不知道如何去做 至少不完全重新发明轮子 是否有任何示例代码或第 3 方包至少可以让我开始 它不一定是免费的 该应用程序使用 NET 用 C
  • Confuser .NET 混淆器。安全吗? [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我目前正在开发一个应用程序 其中阻止用户反编译代码非常重要 现在 我意识到 如果由经验丰富的程序员执行 大多数 exe 都是可反编译的
  • C# Julian 日期解析器

    我在电子表格中有一个单元格 它是 Excel 中的日期对象 但当它来自 C1 的 xls 类时 它会变成双精度型 类似于 2009 年 1 月 7 日的 39820 0 我读到这是儒略日期格式 有人可以告诉我如何在 C 中将其解析回 Dat
  • Java有没有类似微软CHESS的工具?

    是否有类似于 Microsoft 的现有 Java 工具CHESS http research microsoft com chess 或者 CHESS 源代码是否开放 以便我可以尝试将其转换为 Java 谷歌的织线工 http code
  • 托管 .NET 代码中的“访问冲突写入位置...”

    我收到以下异常 MqSearch exe 中 0x000007FE21AFE593 mscorlib ni dll 处出现未处理的异常 0xC0000005 写入位置 0x00000006609476FD 时出现访问冲突 代码是完全托管的
  • 如何在 Microsoft 报告中显示字节数组中的图像

    我使用报表文件和 ReportViewer 控件来显示在运行时从对象动态加载数据的报表 我需要显示一个以字节数组形式存储在对象中的图像 PictureBox 的值当前设置为 First Fields ImageData Value dtst
  • Java:ImageIcon 与 Image 的区别

    谁能以菜鸟的方式向我解释一下两者之间有什么区别图像图标 and ImageJava 中的类 对象 谢谢 它们的性质和应用是不同的 Image http docs oracle com javase 6 docs api java awt I
  • 找不到 Microsoft.Office.Interop Visual Studio

    我正在开发一个使用 C 发送电子邮件的应用程序 该应用程序将能够使用邮件模板等 问题是我无法找到任何 Office Interop 引用 这意味着我无法使用 Outlook 我的计算机上安装了 Office 但我也尝试从此链接安装 PIAh
  • 在 C# 中使用通配符解析相对路径

    在 C 中 如果我有一个目录路径和一个带通配符的相对文件路径 例如 c foo bar and blah cpp 有没有一种简单的方法来获取绝对文件路径列表 例如 c foo blah a cpp c foo blah b cpp 背景 有
  • 调整图像的亮度、对比度和伽玛值

    在 NET 中调整图像的亮度 对比度和伽玛值的简单方法是什么 c and gdi have a simple way to control the colors that are drawn It s basically a ColorMa
  • 如何正确转义mysql?

    我刚刚发现如果我写 select from tbl where name like foo 然后添加 foo 作为参数及其值 a 用户数据 它不会正确转义 我勒个去 它想要 a 即使我使用参数 我还是忍不住觉得我对 sql 注入持开放态度
  • 如何等待远程 .NET 调试器连接

    今天我遇到了一个问题 我需要远程调试程序 该程序是从另一个系统启动的 所以我真的没有机会在命令行上与它交互 不过我可以很容易地改变它的来源 我需要做的是让程序正常启动 然后等待我用调试器附加到它 我想不出一个让我快乐的方法 我确实发现了这个
  • 如何使使用 css 调整大小的图像在 IE 中看起来不错?

    当使用 css 宽度 高度或属性宽度 高度缩放图像时 IE6 和 IE7 无法很好地缩放网页中的图像 我不确定它默认使用哪种算法 但这不好 在这些浏览器中缩放时 缩放图像会显示锯齿伪影 幸运的是 有一种方法可以通过简单的 css 规则强制
  • 在 Android 中调整可绘制对象的大小

    我正在为进度对话框设置一个可绘制对象 pbarDialog 但我的问题是我想每次调整可绘制的大小 但不知道如何调整 这是一些代码 Handler progressHandler new Handler public void handleM
  • 如何在 Android 中使用 C# 生成的 RSA 公钥?

    我想在无法假定 HTTPS 可用的情况下确保 Android 应用程序和 C ASP NET 服务器之间的消息隐私 我想使用 RSA 来加密 Android 设备首次联系服务器时传输的对称密钥 RSA密钥对已在服务器上生成 私钥保存在服务器

随机推荐

  • 如何在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 图像时 我在尝试添加