0

私のアプリケーションはTabControlデータを表示するために使用します。ユーザーがデータを要求するたびに、アプリケーションTabPageは多くのコントロール (PictureBoxコントロール、Labelコントロール、.etc) を含む新しいデータを作成します。ある時点で、ユーザーTabPageは作業を終えたコントロールを閉じます。ここでの問題は、閉じたTabPageコントロールです。それらはメモリに積み重なって、プログラムがメモリの大部分を使用する原因になります。TabPageからコントロールを削除しTabControlても、それは破棄されず、その中のアイテムも破棄されません。単に非表示になりますが、コントロールはメモリ内でハングしたままです。

を削除するために使用しているコードは次のTabPageようなものです。

tabControl.TabPages.Remove(myTabPage);
myTabPage.Dispose();   

TabPageQ:コントロールを完全に取り除くにはどうすればよいですか?

4

2 に答える 2

0

myTabPage.Dispose() を呼び出すと、TabPage とその子のリソースが破棄されます。ただし、これらのオブジェクトが他のオブジェクトから参照されていなくても、これらのオブジェクトによって使用されるメモリは、GC によってすぐに解放されるとは限りません。

非常に大きなメモリを搭載したコンピューターでは、GC は遅延する傾向があります。メモリが後で、たとえば数分後に解放される限り、心配する必要はありません。

于 2013-02-28T23:41:49.773 に答える
0

それに関連付けられているタブページ コントロールを毎回反復処理し、それらをループで破棄できます。

            tabControl1.TabPages[0].Controls[i].Dispose();
于 2013-02-28T23:22:19.417 に答える