关于ArcGIS Engine中Shape文件锁的释放(rd.lock,sr.lock,wr.lock)

14 篇文章 0 订阅
6 篇文章 0 订阅

本文主要介绍rd.lock、sr.lock与wr.lock的释放问题,之后可能会引申到多线程中的批处理shape时锁的问题!


PS: 补充多线程处理shape 2018.12.04
经测试,使用Parallel.For测试批量处理shape成功,没有使用共享数据资源,只是需要注意锁的释放问题!使用后最好立即释放掉~


需求

需要批处理点shape,根据点生成相关的面shape(其实我很想使用c++ ogr来做),在没有消除锁时则不能往shape写入数据或者其他相关会产生锁的操作,考虑到时间成本,先使用AE这个比较熟悉的库,后期有空再补上!

调试

  • 在使用IFeatureClass.OpenFeatureClass()之后生成了sr.lock文件,在IFeatureClass.Search()之后会生成rd.lock文件,在IFeatureClass.Insert()之后会产生wr.lock文件;

解决

  • 消除sr.lock伪代码:
IWorkspaceFactoryLockControl control = IWrokspaceFactory as IWorkspaceFactoryLockControl;
if(control.SchemaLockingEnabled)
{
	control.DisableSchemaLocking();
}
  • 消除rd.lock伪代码(读取锁?):
System.Runtime.InteropServices.Marshal.ReleaseComObject(IFeatureSearchCursor);
  • 消除wr.lock伪代码(写入锁?):
System.Runtime.InteropServices.Marshal.ReleaseComObject(IFeatureInsertCursor);

总结

  • 这里是部分尝试过的锁的释放;
  • 这里有打开工作空间的释放与游标的释放两种
  • 在单线程中这样顺利的执行了;多线程测试后再看~~~
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值