明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
12
返回列表 发新帖
楼主: asd106

[基础] 关于ObjectARX托管封装类的问题

[复制链接]
发表于 2016-1-14 21:53:58 | 显示全部楼层
应该会自动销毁的吧
发表于 2016-1-15 08:53:25 来自手机 | 显示全部楼层
事务打开或新建的实体 是由事务自行销毁的
发表于 2016-1-15 23:12:45 | 显示全部楼层
本帖最后由 cairunbin 于 2016-1-16 11:22 编辑
雪山飞狐_lzh 发表于 2016-1-15 08:53
事务打开或新建的实体 是由事务自行销毁的


谢飞狐提点。
我查了一下Kean的网站,大致应该是这样:
事物中打开或新创建并添加到数据库中的对象,由事物负责调用Dispose。
在事物中,创建但并未添加到数据库中的DBObject对象,应该由用户自行Dispose,否则,极可能导致AutoCAD崩溃。
即使是Autodesk.AutoCAD.Geometry名下的几何类,都有导致CAD崩溃的可能,如果没有被Dispose的话。
Kean的两篇有关文章的链接为:
http://through-the-interface.typ ... utocad-objects.html
http://through-the-interface.typ ... leaning-up-aft.html

最近,我写的带状图自动分幅程序,总是莫名崩溃,崩溃点大多在Curve.IntersectWith方法,一直找不到原因,还以为是坐标值太大,Tolerance设置不正确导致,现在看起来,可能是因为临时DBObject对象的Dispose方法没有被正确调用有关。

吐槽:
Autodesk公司不知道到底在想什么,到底是支持二次开发还是害怕二次开发?提供了二次开发接口,但帮助文档看起来就像是故意将很多重要细节隐藏,让开发人员费尽心思去猜。
现在,AutoCAD二次开发的帮助文档,就是官方文档+Kean网站+社区+程序员猜猜看,,,呵呵呵。。。

另:Dispose的调用有两个途径,一是Using(在此声明需要Dispose的对象){},二是在try catch finally的finally块中,显式调用各对象的Dispose方法。

再另:若对象未被正确Dispose,那么VS会有提醒,在output窗口中,会问你,是不是忘了正确调用Dispose方法。如果有这样的提醒,就应该检查代码是否完善了。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2024-11-25 10:56 , Processed in 0.132834 second(s), 16 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表