析構函數什么時候會調用?


我希望c#程序在退出后自動向數據庫更新狀態,所以定義了

Class A{

A(){
//一些數據庫初始化工作
}
~A(){
//一些更新數據庫工作
}
}
然后在CLI程序一運行的時候就new A了

但是我發現程序的窗口關閉后並沒有調用析構

是我用錯了?還是有其他方法控制程序退出時的調用?謝謝


2012年11月22日 3:34
回復 | 引用 |
答案
Question
登錄進行投票
0
登錄進行投票
dear

我是可以調用的,無法模擬你的問題,為了防止有人未依正常程序結束物件的生命周其,才有析構的出現

你可在 ~A() 設定中斷點觀察

析構是為了釋放非托管資源用的,並非讓你用來更新數據。

http://msdn.microsoft.com/zh-cn/library/66x5fx1b(VS.80).aspx

程序員無法控制何時調用析構函數,因為這是由垃圾回收器決定的。垃圾回收器檢查是否存在應用程序不再使用的對象。如果垃圾回收器認為某個對象符合析構,則調用析構函數(如果有)並回收用來存儲此對象的內存。程序退出時也會調用析構函數。


http://hi.baidu.com/yy3b2007com/item/c79634c74b257e78cfd4f81b


注意!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系我们删除。



 
  © 2014-2022 ITdaan.com 联系我们: