arcengine删除要素数据集时,在文件被占用时依然能够被删除

类似catalog里的sde功能,删除要素数据集,关键代码如下: IDatasetName dataName = dsNode.Tag as IDatasetName;
                    IName name = dataName as IName;       
                    IDataset ds = name.Open() as IDataset;
                    try
                    {
                        ds.Delete();
                        dsNode.Remove();
                    }
               catch (Exception ex)
                    {
                        MessageBox.Show(ex.ToString());
                    }
在arcmap中某要素数据集下的要素类正处于编辑状态,用这个方法(ds.Delete();)删除该数据集时,能catch到错误,但这句代码依然能够删除要素数据集。。
  arcmap里面,如果要素数据集下的要素类在没有注册的情况下打开,右键数据集能够正常删除;
如果该要素类处于编辑状态,右键要素数据集时删除选项是灰色的,不能使用。
  现在想请教一下如何判断该要素数据集是否被程序占用?另外ds.Delete()这个方法在catch到错误的情况下为何还能正常删除。。
  尝试用这句代码判断是否被占用:if (wFLockControl.SchemaLockingEnabled),但在调试的时候发现这句代码执行后的结果始终是true。
已邀请:

朱新颖

赞同来自:

您试一下ISchemaLock获取排他锁,如果可以获取肯定没有别的程序占用这个文件的,但是如果ArcMap中没有编辑,只是打开的话应该也获取不到排他锁。

要回复问题请先登录注册