ガベージ コレクターは、コントロールに接続されたリソースをクリーンアップしないようで、WinFormsアプリケーションのユーザー オブジェクトProgressBar
の数が継続的に増加します (タスク マネージャーに表示されます)。
サンプルコードは次のとおりです。
private void button1_Click(object sender, EventArgs e)
{
GC.Collect();
GC.WaitForPendingFinalizers();
GC.Collect();
panel1.Controls.Clear();
Random rnd = new Random((int)DateTime.Now.Ticks);
ProgressBar pB = new ProgressBar() { Value = rnd.Next(0, 100) };
panel1.Controls.Add(pB);
}
Button
をクリックすると、ユーザーオブジェクトの数が 2 ~ 3 増加します。ユーザー オブジェクトの数が 10000 になると、 anException
がスローされます。ユーザー オブジェクトの増加を防ぐにはどうすればよいですか?
つづりや文法の間違いはご容赦ください。英語は私の母国語ではありません。