winForm窗体的close、dispose
最近编了一个小程序,初始运行正常,当实际使用时,突然发现程序运行一段时间后,会自动的弹出一个系统中的messagebox。我想当然的认为是病毒在作怪吗?把程序安装到其他电脑上,故障依然,可以肯定是代码的事了。
仔细观察代码、故障现象后,发现是窗体在close后,窗体中的timer控件依然工作,我在timer控件到达指定的时间(10分钟)后,就会弹出故障中出现的messagebox。
处理:如果想关闭showdialog出的窗体,应使用dispose方法,然后将窗体变量赋值null。即使不对窗体变量赋值null,timer控件在dispose后也不会工作。问题得以解决。
以下摘自CSDN http://bbs.csdn.net/topics/390018880
1、当通过ShowDialog方法来显示一个模态窗体时:调用该窗体的Close方法后,只是隐藏了该窗体,仍然可以访问该窗体,并可以取得该窗体上控件的值,而且还可以通过ShowDialog方法重新显示该窗体。当调用该窗体的Dispose方法时,等于释放了该窗体所占有的资源,但该对象任然存在,可以访问该窗体,也可以取得窗体上控件的值,但是不能再通过ShowDialog方法重新显示该窗体。
2、当通过Show方法来显示一个非模态窗体时,情况就简单许多,因为Close方法和Dispose方法是一样的,他们都调用了带一个参数的Dispose方法。