新浪博客

ArcGIS Engine 解决图层文件锁 sr.lock问题

2013-08-20 14:09阅读:
首先能释放的 if (pFeatureCursor != null) Marshal.ReleaseComObject(pFeatureCursor);
if (pFeatureClassMenDian != null) Marshal.ReleaseComObject(pFeatureClassMenDian);
释放掉。
其次,图层关闭,利用IDataLayer2 接口。
///
/// 关闭Toc中指定的图层
///
/// 分组路径
/// 层名
public static void CloseLayer(string groupPath, string layerName, IMap pMap)
{
IActiveView pActiveView = null;
IFeatureLayer featureLayer = null;
try
{
pActiveView = (IActiveView)pMap;
featureLayer = GetFeatureLayerByName(groupPath, layerName, pMap);
if (featureLayer != null)
{
//关闭Lock
IDataLayer2 dataLayer = featureLayer as IDataLayer2;
try
{
//GC.Collect();
dataLayer.Disconnect();

}
catch
{
//throw;
}
finally
{
pMap.DeleteLayer(featureLayer);
pActiveView.Refresh();
}
}
}
catch
{
throw;
}
finally
{
if (featureLayer != null)
{
System.Runtime.InteropServices.Marshal.ReleaseComObject(featureLayer);
featureLayer = null;
}
if (pActiveView != null)
{
System.Runtime.InteropServices.Marshal.ReleaseComObject(pActiveView);
pActiveView = null;
}
}
}
都这样了,如果还不能释放,那可能是哪个程序调用图层,从中取过值,可以在循环取值的pFeature = pFeatureCursor.NextFeature();这句代码之前释放掉pFeature,Marshal.ReleaseComObject(pFeature);
这样解决了我删除图层文件因为锁定一直失败的问题。

我的更多文章

下载客户端阅读体验更佳

APP专享