用.net 搞office出现的一个异常。
代码很简单,首先是打开office,然后我把主程序关了,office还没关,然后我写了析构函数,清理资源。vs定位到清理资源代码段,也就是访问.net 包装的com对象的成员函数时,就产生了这个错误。
要怎么解决?
office的com包装类的引用还在,为何我把主窗口关闭(主窗口类包含这个引用),这个com包装类反而先我的主程序早一步被不明aoe清理了呢?
需要一提的是,主窗口包含类A对象,类A包含com对象。异常出现在类A的析构函数中。
断点在:析构函数调用com对象的成员函数。
没有任何其他代码操控com对象。
ps。经过一天的百度,msdn,只看到一条比较合理的解释:析构函数的调用顺序是无法控制的。因此,不要在析构函数里面做这个资源释放?~~ 那在哪里做?只能靠显示调用dispose~~。 还希望听听大家的见解。
.net中控制资源释放的就是dispose模式