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);
这样解决了我删除图层文件因为锁定一直失败的问题。