- 积分
- 990
- 明经币
- 个
- 注册时间
- 2011-8-27
- 在线时间
- 小时
- 威望
-
- 金钱
- 个
- 贡献
-
- 激情
-
|
我有一个dwg文件,里面有5万多个块、单行文字、多段线对象,每个对象都是通过“附着定义文件”分类了的。目的是要遍历所有对象,获取其分类属性。现在能够获取到其分类属性,但是却出现CAD占用内存快速增加,最后导致内存不足,程序直接崩溃。代码如下:
ClassificationManager myManager = Autodesk.Gis.Map.HostMapApplicationServices.Application.ActiveProject.ClassificationManager;
FeatureClassPropertyCollection CurPropertyCollection = new FeatureClassPropertyCollection();
System.Collections.ArrayList CurArrayList = new System.Collections.ArrayList();
//获取到所有对象的ObjectID,共有5万多个
ObjectIdCollection AllObjIDs = GetAllObjIDS();
//假设所有对象的分类名称都一样
string XmlFilePath = @"D:\123.xml";
string ClassName = "自定义分类";
using (DocumentLock dl = Autodesk.AutoCAD.ApplicationServices.Application.DocumentManager.MdiActiveDocument.LockDocument())
{
//附着自定义文件
myManager.AttachFeatureDefinitionFile(XmlFilePath);
for(int i = 0; i < AllObjIDs .Count; i++)
{
CurPropertyCollection.clear();
CurArrayList .clear();
try
{
//问题就是这个函数
//这里获取对象的分类属性,但是发现每循环一次,使用的内存和句柄数就不断增加,还不能释放,到最后CAD报内存不足,直接崩溃!
//如果把下面这句注释掉,则不会有内存问题。
myManager.GetClassifiedProperties(CurPropertyCollection, CurArrayList, AllObjIDs [i], ClassName);
}
catch { }
//后面做其他的操作
。。。。。。。。。。
}
}
不知道有没有朋友做过。要怎么释放使用GetClassifiedProperties时占用的内存呢?
|
|