析构函数什么时候会调用?


我希望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 联系我们: