winForm窗體的close、dispose

最近編了一個小程序,初始運行正常,當實際使用時,忽然發現程序運行一段時間後,會自動的彈出一個系統中的messagebox。我想固然的認爲是病毒在做怪嗎?把程序安裝到其餘電腦上,故障依然,能夠確定是代碼的事了。小程序

仔細觀察代碼、故障現象後,發現是窗體在close後,窗體中的timer控件依然工做,我在timer控件到達指定的時間(10分鐘)後,就會彈出故障中出現的messagebox。.net

處理:若是想關閉showdialog出的窗體,應使用dispose方法,而後將窗體變量賦值null。即便不對窗體變量賦值null,timer控件在dispose後也不會工做。問題得以解決。對象

如下摘自CSDN http://bbs.csdn.net/topics/390018880資源

一、當經過ShowDialog方法來顯示一個模態窗體時:調用該窗體的Close方法後,只是隱藏了該窗體,仍然能夠訪問該窗體,並能夠取得該窗體上控件的值,並且還能夠經過ShowDialog方法從新顯示該窗體。當調用該窗體的Dispose方法時,等於釋放了該窗體所佔有的資源,但該對象任然存在,能夠訪問該窗體,也能夠取得窗體上控件的值,可是不能再經過ShowDialog方法從新顯示該窗體。
二、當經過Show方法來顯示一個非模態窗體時,狀況就簡單許多,由於Close方法和Dispose方法是同樣的,他們都調用了帶一個參數的Dispose方法。get

相關文章
相關標籤/搜索