2017-01-27 6 views
1

私は.NET 3.5ベースのC#デスクトップソフトウェアで作業しています。UltraWinGridによってOutOfMemoryExceptionが発生する

私は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をスローせずにすべてのセルを安全に反復処理する方法は?どんな助けもありがとうございます。

+0

この6416000の操作は大変です。 UIからプロセスをバックグラウンドのスレッドまたはデータベースに移動することを検討することができます。 – apc

+0

私はできると思います。このソフトウェアは10年以上前に書かれており、リリース間で大きな変更はできません。 – Donotalo

+0

これはおなじみのようです。私はそれが元々多くのデータを扱うことに甘んじられていなかったと推測しています。 いくつかの操作を延期して、可視の行だけを処理してから、ユーザーがプロセスをもう少しスクロールすることはできますか? //何をしているのですか? – apc

答えて

1

解決策を見つけましたが、徹底的にテストされていません。テーブルの行の各セルは、その行の処理がDeallocateCells()によって完了すると、割り当てを解除することができます。

関連する問題