【发布时间】: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