トップページ > プログラム > 2016年12月29日 > WI/qqjBQ0

書き込み順位&時間帯一覧

7 位/172 ID中時間01234567891011121314151617181920212223Total
書き込み数0000000010200100000000004



使用した名前一覧書き込んだスレッド一覧
デフォルトの名無しさん (ワッチョイ af87-Eko0)
ふらっと C#,C♯,C#(初心者用) Part126 [無断転載禁止]©2ch.net

書き込みレス一覧

ふらっと C#,C♯,C#(初心者用) Part126 [無断転載禁止]©2ch.net
16 :デフォルトの名無しさん (ワッチョイ af87-Eko0)[]:2016/12/29(木) 08:46:21.64 ID:WI/qqjBQ0
ID:4cVGFWSK0ですが、みなさまご意見ありがとうございます。
>>12
教えていただいたサンプルでもやってみます。
また経過を書かせてもらいますね。

>>13
dataGridView1.Rows.Clear();はやっています。(thisは付けていないですが)
そのあと、関数をコールして、その関数内で、DataGridViewRowのくだりをやっています。

>>14
PCのメモリ量は大きいですね(8G)。
でも、32bitアプリにしてるので、2Gで落ちるのです。

>>15
情報ありがとうございます。
早速検索してみます!
ふらっと C#,C♯,C#(初心者用) Part126 [無断転載禁止]©2ch.net
20 :デフォルトの名無しさん (ワッチョイ af87-Eko0)[sage]:2016/12/29(木) 10:28:13.15 ID:WI/qqjBQ0
>>17
情報ありがとうございます。簡単そうだったので、早速使ってみました。

途中から枝分かれが多くなってきたのですが、枝の元はここのようです。
206 MB(83.62%) from System.EventHandler System.Object []->System.EventHandler->(System.Windows.Forms.DataGridViewComboBoxCell)
147 MB(59.76%) to System.Windows.Forms.PropertyStore(1) System.Windows.Forms.DataGridViewComboBoxCell->System.Windows.Forms.PropertyStore->(System.Windows.Forms.PropertyStore.IntegerEntry [])

DataGridViewの列にはComboBoxにしている列が多数ありまして、
そのComboBoxをクリックしたときに発生するイベントを幾つか利用してるのですが、
そのイベント周りで、クリア→再表示させたときに何か悪さしている感じでしょうか。
ふらっと C#,C♯,C#(初心者用) Part126 [無断転載禁止]©2ch.net
21 :デフォルトの名無しさん (ワッチョイ af87-Eko0)[]:2016/12/29(木) 10:48:11.82 ID:WI/qqjBQ0
20です。ComboBoxでピンと来て、検索してみたのですが、おそらくここで質問されている現象と同じようなことかと思います。

https://translate.google.co.jp/translate?hl=ja&;sl=en&u=https://social.msdn.microsoft.com/Forums/windows/en-US/26ca1a52-03af-4ad5-8f98-d22498116701/datagridviewcomboboxcell-memory-leak%3Fforum%3Dwinformsdatacontrols&;prev=search

DataGridViewのComboBoxに表示させる要素をDataTableとバインドさせているのですが、それが影響しているようです。
上記の質問ページの回答で解決しているのか不明ですが。。。
ふらっと C#,C♯,C#(初心者用) Part126 [無断転載禁止]©2ch.net
22 :デフォルトの名無しさん (ワッチョイ af87-Eko0)[]:2016/12/29(木) 13:24:27.74 ID:WI/qqjBQ0
20ですが解決しました。

原因は、DataGridViewのComboBoxの要素用にDatatableをバインドしていたのですが、
それだとDataGridView.Rows.Clear()しただけでは、ガベージコレクションされていませんでした。

DataGridView.Rows.Clear()したあとに、
各バインドをすべて解除する(Datasourceにnullを代入)と、
ガベージコレクションで、メモリが解放されました。
(その後、次のデータを表示するために再バインドを行います)

どうも懇切丁寧に教えてくださり、ありがとうございました。


※このページは、『2ちゃんねる』の書き込みを基に自動生成したものです。オリジナルはリンク先の2ちゃんねるの書き込みです。
※このサイトでオリジナルの書き込みについては対応できません。
※何か問題のある場合はメールをしてください。対応します。