如何释放对gdb的锁定?


11

我在ArcGIS10中发布gdb时遇到问题。我的工具可与本地gdb一起使用,但在此过程之后无法释放它。在Ag9.3中,我可以简单地通过Marshal.ReleaseComObject(workspace)释放它,但这在AG10中不起作用。同时释放所有FeatureCursors也无济于事。仅关闭整个应用程序会“删除”锁。有谁知道如何在不关闭应用程序的情况下释放我的gdb和“删除”锁?


在此站点上搜索“文件地理数据库锁”,其中一些可能会有所帮助。
乍得·库珀,

当然我以前搜索过该站点。但不幸的是,没有任何建议可以帮助我。我尝试了Compact-GP,但这并没有解锁gdb。它似乎也不是孤立的锁,因为在关闭我的应用程序之前,无法在ArcCatalog中编辑gdb。但是除了释放工作区之外,我还必须释放哪个对象来解锁我的gdb?
AnnemieK 2011年


1
gis.stackexchange.com/questions/6230/…看来,您可能遇到了错误。如果以下所有答案均不适用,我将继续提供Esri技术支持。
马特·威尔基2011年

Answers:


2

我快速浏览了一下,发现了有关您似乎拥有的锁定方案的信息。在ArcObjects 10中,有一个SetWriteLock和FreeWriteLock选项。

请查看论坛链接,特别是来自Esri的Lance Shipman的示例, 网址为http://forums.arcgis.com/threads/36881-the-performance-fgdb-api-amp-arcobjects

CDB玩得开心


SetWriteLock和FreeWriteLock不在ArcObjects中,而是在FileGeodatabase API(独立的arcobjects)中。该库可以写入/释放锁,但只能写入/释放使用此库创建的锁。文件名模式有所不同(不包括计算机名称等)。
mstaessen

2

达到这种条件很容易-您所需要的只是一个对象,该对象持有对需要工作空间保持活动的对象的引用。例如,自定义对象包含功能。

确定没有此类引用后,请尝试调用GC.collect()强制垃圾回收器进入准确定性清除模式



0

http://help.arcgis.com/en/arcgisdesktop/10.0/help/index.html#//003n0000007w000000找到了Idea

“只要您运行地理处理压缩工具,这些.lock文件就会被删除”

string[] lockfiles = Directory.GetFiles(project.Path, "*.lock",   SearchOption.AllDirectories);

if(lockfiles.Length > 0)
{
int lockCt = 0;
while (lockCt < lockfiles.Length)
{
 string inFGDB = System.IO.Path.GetDirectoryName(lockfiles[lockCt]);

 ESRI.ArcGIS.DataManagementTools.Compact compactProcess = new   ESRI.ArcGIS.DataManagementTools.Compact();

 compactProcess.in_workspace = inFGDB;

 geoprocessor.Execute(compactProcess ,null);

  lockCt++;
}
}
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.