我有一个子表单,其中包含一个RichTextBox
加载了 RichText 资源文件的子表单。
当单击关闭子窗体的按钮时(使用Close()
),窗体将关闭并返回到父窗体。但是,资源并没有被处置。事实上,在几乎把我的鼠标按钮用完之后,内存真的升级了。
作为测试资源是否最终会被释放,我在父表单上设置了一个表单计时器来加载子表单,在子表单中设置另一个来调用Close()
. 这次资源在大约 5 或 6 个打开/关闭周期后被释放。
嗯..我想。所以我改变了设置来模拟现实。这次我将子窗体计时器触发事件更改为包含button1.PerformClick()
,它触发包含语句button1
的按下事件。Close()
这次没有释放资源,在我中止测试之前内存使用量上升到 1 GB!
为什么包含的按钮事件与包含Close()
的计时器事件不同Close()
?
好的..这是打开子窗体的父窗体上的代码:-
private void showSplashScreen()
{
// Instantiating SplashScreen
SplashScreen splash = new SplashScreen();
// Displaying SplashScreen
splash.ShowDialog();
}
这是关闭表单的子表单上的代码:-
private void button1_Click( object sender, EventArgs e )
{
Close();
}
private void timer1_Tick( object sender, EventArgs e )
{
button1.PerformClick();
// Close();
}
当以这种方式运行时,内存使用量会增加。但是如果button1.PerformClick()
被注释掉并且Close()
未被注释的资源会定期释放