2017-01-27 12 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 예외를 throw하기 시작합니다. 나는 this guideline을 거쳤으나 값이 아닌 다른 많은 셀의 속성에 액세스해야하므로 내 경우에는 적용되지 않습니다.

UltraWinGrid에서 OutOfMemoryException을 발생시키지 않고 모든 셀을 안전하게 반복하는 방법은 무엇입니까? 어떤 도움을 주셔서 감사합니다.

+0

그 6416000 작업, 많이 지옥. UI에서 프로세스를 백그라운드 스레드 또는 데이터베이스로 이동하는 방법을 살펴볼 수 있습니다. – apc

+0

내가 할 수 있으면 좋겠다. 이 소프트웨어는 10 년 전에 작성되었으며 우리는 릴리스간에 큰 변화를 만들 수 없습니다. – Donotalo

+0

익숙한 것 같습니다. 원래 많은 양의 데이터를 처리하는 것이 바람직하지 않다고 생각합니다. 일부 작업을 지연하여 표시 행만 처리 한 다음 사용자가 프로세스를 더 스크롤 할 때 사용할 수 있습니까? // 무슨 일이 일어나고 있습니까? – apc

답변

1

솔루션을 찾았지만 철저히 테스트하지는 않았습니다. 테이블 행의 각 셀은 해당 행의 처리가 DeallocateCells()을 통해 완료되면 할당 해제 될 수 있습니다.