Winforms アプリケーション内でサーバーからデータを取得するために WCF データ サービスを使用しています。何百万ものレコードを持つかさばるレポートを表示しようとしています。私はデータページを賢明にフェッチしてコレクションに保存していますが、メモリが不足しています。
以下は、合計レコードを検索し、List にメモリを割り当てるために使用されるコードです。
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();
}
このメモリの問題を克服する方法を誰かが提案できますか? 他の代替手段はありますか?あなたの知恵と時間を共有してくれてありがとう。