- 締切済み
DataGridViewのスクロールでメモリリークする?
はじめまして Microsoft Visual C# 2005の初心者です。 WinXP上で、データグリッドビューを使用して、表示専用の5列10000行程度の表を作成しています。 データグリッドビューへのデータ設定は、データバインドは行わずに、直接 dgvDiffList_dataGridView1[2, 0].Value = "ABC"; のように行っています。 データグリッドビューの表示後、マウスホイールでスクロールさせて全データを表示しようとすると、スクロールを行う毎にメモリ使用量がどんどん増加していきます。 5000行目辺りの表示を行うころから80Mバイト位を使用してしまい、スクロールバーは動くものの、画面の表示更新が行われなくなり、それでもスクロールバーを動かしていると、OutOfMemoryExceptionが発生してしまいます。 データグリッドビューをバーチャルモードで実行しても、同様の現象になります。 データグリッドビューで大量の表示をした上でスクロールを行うと、メモリを消費してしまうものでしょうか。 また、それを回避する方法はなにかないでしょうか。
- みんなの回答 (1)
- 専門家の回答
みんなの回答
- chie65536(@chie65535)
- ベストアンサー率44% (8812/19983)
回答No.1
お礼
ありがとうございました。 データグリッドビューをスクロールすると、メモリ消費量がどんどん増える件は、.NET Frameworkのバージョンによって発生したり、しなかったりするようです。 具体的には、.NET Framework 1.0、3.5では発生せず、.NET Framework 2.0で発生しています。 とりあえず、2.0の環境では使用しないように検討します。 でも、「2.0だから現象が発生するのか」と言うのをネットで探してみましたが、見つけられませんでした。
補足
ご回答、ありがとうございます。 ご指摘の方法を検討(勉強)してみます。 現行の方法の場合、5×10000のグリッドを作成し、全てのセルにデータをセットして1ページ目(18行)を表示した時点では、メモリ消費量が20M以内なのですが、スクロールして行くと、どんどんメモリの消費量が増えていきます。 こちらも、見えていないところにデータをセットしたままであるがための現象なのでしょうか。