我希望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
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