【问题标题】:UltraWinGrid causes OutOfMemoryExceptionUltraWinGrid 导致 OutOfMemoryException
【发布时间】:2017-01-27 06:41:47
【问题描述】:

我正在使用基于 .NET 3.5 的 C# 桌面软件。

我有一个具有 16000 行和 401 列的大型 UltraWinGrid 对象。使用以下代码遍历所有单元格:

UltraGridRow currentrow = _grid.GetRow(ChildRow.First);
for (int r = 0; r < _grid.Rows.Count; r++)
{
    for (int c = 0; c < currentrow.Cells.Count; c++)
    {
        // Do stuff

上面的代码用于 Infragistics 3.x。在我们将 Infragistics DLL 升级到 12.1 后,它开始抛出 OutOfMemoryException 异常。我已经通过this guideline,但它不适用于我的情况,因为我需要访问单元格的许多其他属性而不是值。

如何安全地遍历所有单元格而不在 UltraWinGrid 中抛出 OutOfMemoryException?任何帮助表示赞赏。

【问题讨论】:

  • 那是 6416000 次操作,非常多。您可能希望考虑将您的进程从 UI 移到后台线程或数据库中。
  • 我希望可以。该软件是十多年前编写的,我们不允许在不同版本之间进行如此大的更改。
  • 听起来很熟悉。我猜它最初并不是为了处理那么多数据而设计的。是否可以推迟一些操作,以便您只处理可见行,然后当用户滚动处理更多? //Do stuff 中发生了什么?

标签: c# infragistics ultrawingrid


【解决方案1】:

我找到了一个解决方案,但没有经过彻底测试。一旦通过DeallocateCells() 完成该行的处理,就可以释放表格行的每个单元格。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-06-14
    • 1970-01-01
    • 2016-12-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多