免费视频|新人指南|投诉删帖|广告合作|地信网APP下载

查看: 3777|回复: 1
收起左侧

[经验共享] ArcEngine解除锁定的数据文件Lock

[复制链接]

66

主题

1364

铜板

7

好友

工程师

Rank: 7Rank: 7Rank: 7

积分
584
发表于 2017-3-17 16:34 | 显示全部楼层 |阅读模式

说明

在ArcEngine开发中可有时候会有这样需要,在不关闭ArcEngine应用程序的情况下,对图层数据做相应的操作,如将图层数据压缩打包。对这个问题ArcEngine提供了相应的接口控制。


解锁资源文件

解除对资源文件的锁定需要使用IWorkspaceFactoryLockControl接口,默认情况下对资源文件的锁定状态是打开的,可通过如下的方式得知:ipWsFactoryLock.SchemaLockingEnabled

​解锁资源文件的一般步骤:使用IWorkspaceFactoryLockControl接口关闭资源锁定,然后在使用完AE COM接口后,使用ComRelease释放COM接口即可。

示例源码如下:

private void mnuItemUnlockFGDB_Click(object sender, EventArgs e)

​{

        IWorkspaceFactory2 ipWsFactory = new FileGDBWorkspaceFactoryClass();

         //关闭资源锁定

IWorkspaceFactoryLockControl ipWsFactoryLock;

ipWsFactoryLock = (IWorkspaceFactoryLockControl)ipWsFactory;

if (ipWsFactoryLock.SchemaLockingEnabled)

{

​ipWsFactoryLock.DisableSchemaLocking();

}

String strConn = "DATABASE=F:\\临时测试\\world.gdb";

IWorkspace ipWorkspace = ipWsFactory.OpenFromString(strConn,0);

IFeatureWorkspace ipFtWorkspace = (IFeatureWorkspace)ipWorkspace;

IFeatureDataset ipFtDataset = ipFtWorkspace.OpenFeatureDataset("world");

IEnumDataset ipEnumDataset = ipFtDataset.Subsets;

ipEnumDataset.Reset();

IDataset ipDataset = ipEnumDataset.Next();

while (ipDataset!=null)

{

IFeatureClass ipFtClass = (IFeatureClass)ipDataset;

IFeatureLayer ipFtLayer = new FeatureLayerClass();

ipFtLayer.FeatureClass = ipFtClass;

ipFtLayer.Name = ipDataset.Name;


                  //对图层做相关操作处理


ipDataset = ipEnumDataset.Next();


ComReleaser.ReleaseCOMObject(ipFtClass);

ComReleaser.ReleaseCOMObject(ipFtLayer);

}


ComReleaser.ReleaseCOMObject(ipWorkspace);

ComReleaser.ReleaseCOMObject(ipFtWorkspace);

ComReleaser.ReleaseCOMObject(ipFtDataset);

ComReleaser.ReleaseCOMObject(ipEnumDataset);

ComReleaser.ReleaseCOMObject(ipDataset);

ComReleaser.ReleaseCOMObject(ipWsFactory);

ComReleaser.ReleaseCOMObject(ipWsFactoryLock);

}


评分

参与人数 1威望 +20 铜板 +80 收起 理由
jimi21 + 20 + 80 感谢分享!

查看全部评分

141

主题

982万

铜板

3万

好友

管理员

Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20

积分
621916
发表于 2017-3-17 16:44 | 显示全部楼层
感谢分享!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

在线客服
快速回复 返回顶部 返回列表