我正在使用WCF數據服務從我的Winforms應用程序中的服務器獲取數據。 我正試圖顯示龐大的報告有數百萬條記錄。 雖然我提取明智的數據頁面和存儲到集合,但內存不足。內存不足
以下是用於查找總記錄和爲列表分配內存的代碼。
int totalRecords = ReportingService.Instance.CountRecords_ReportItemWiseSell(d1, d2);
List<Report_ItemWiseSellEntity> reportItems = new List<Report_ItemWiseSellEntity>(totalRecords);
這裏是收集所有分頁數據
int totalPageCount = (totalRecords/pageSize) + 1;
lvReport.Items.Clear();
for (int i = 1; i <= totalPageCount; i++){
var tmpItems = new List<Report_ItemWiseSellEntity>();
tmpItems = ReportingService.Instance.GetItemWiseSellReport(d1, d2, i, pageSize);
reportItems.AddRange(tmpItems);
... //other stuff
tmpItems = null;
Application.DoEvents();
}
任何人都可以提出如何克服這種內存問題的代碼。還有其他的選擇嗎? 感謝您分享您的智慧和時間。
哪一個內存不足,WinForms應用程序或WCF? –
另外,「Report_ItemWiseSellEntity」中包含哪些數據結構? –
你會在哪一行得到OutOfMemoryException? 看來你的循環循環遍歷每一頁和加載項目。如果是這樣的話,爲什麼呢?分頁的想法應該是隻將當前顯示的頁面加載到內存中。 – mortb