【问题标题】:Showing the same image repeatedly in a DataGridView without memory over-use在 DataGridView 中重复显示相同的图像而不会过度使用内存
【发布时间】:2020-06-05 11:28:22
【问题描述】:

我认为我在做一些非常愚蠢的事情,但找不到替代品!

我有一个我的表单要处理的文件列表,我正在使用 datagridview 来显示所有文件以及我在列表中的进度。我有一个“等待”“处理”和“完成”的图像资源,并将它们全部放入DataGridViewImageColumn

For Each file As String In folderListing
     DataGridView1.Rows.Add(file, My.Resources.WaitingImg)

Next

问题是,它似乎为每个图像使用了一小块 RAM,当我在测试运行中有 5,000 个时,它使用了 4Gb...

如何做到这一点,它只加载一次资源,但在数百或数千个地方显示它?

【问题讨论】:

    标签: vb.net datagridviewimagecolumn


    【解决方案1】:

    不要重复使用My.Resources 的任何属性。每次使用此类属性时,它都会从资源中提取数据并创建一个新对象。在任何特定上下文中,获取一次属性,分配给一个变量,然后多次使用该变量,例如

    Dim waitingImg = My.Resources.WaitingImg
    
    For Each file As String In folderListing
         DataGridView1.Rows.Add(file, waitingImg)
    Next
    

    如果您需要更改图像,请先将资源属性分配给字段,然后在需要时使用这些字段设置单元格值。

    【讨论】:

    • 谢谢,这可能就是我找不到任何答案的原因 - 这是一个与我预期完全不同的错误!
    猜你喜欢
    • 2012-04-15
    • 1970-01-01
    • 1970-01-01
    • 2018-02-18
    • 2016-06-13
    • 2017-09-18
    • 1970-01-01
    • 1970-01-01
    • 2013-08-07
    相关资源
    最近更新 更多