zoukankan      html  css  js  c++  java
  • AO解锁shp文件

    AO开发中加载shp文件后,无论删除对象还是垃圾回收都不能解除shp文件的锁定,导致在其他地方无法对该图层进行操作,只有关闭应用程序才能删除加锁文件,彻底释放资源。

    其实,AO中有专门的代码解除资源锁定,解锁文件:

    1、存在接口IWorkspaceFactory的情况

    IWorkspaceFactory pwf = new ShapefileWorkspaceFactory();
    //关闭资源锁定   
    IWorkspaceFactoryLockControl ipWsFactoryLock = (IWorkspaceFactoryLockControl)pwf;
    if (ipWsFactoryLock.SchemaLockingEnabled)
    {
        ipWsFactoryLock.DisableSchemaLocking();
    }


    2、仅已知接口IFeatureClass的情况

    /// <summary>
    /// 解锁IFeatureClass锁定的资源
    /// </summary>
    /// <param name="pFeatureClass">锁定资源的要素类</param>
    /// <param name="releaseComObject">false-默认,不释放要素类;true-解锁并释放要素类</param>
    public static void UnlockResource(IFeatureClass pFeatureClass, bool releaseComObject = false)
    {
        if (pFeatureClass == null) return;
        IWorkspace pWorkspace = ((IDataset)pFeatureClass).Workspace;
        if (pWorkspace == null) return;
        //关闭资源锁定
        try
        {
            IWorkspaceFactoryLockControl ipWsFactoryLock = (IWorkspaceFactoryLockControl)pWorkspace.WorkspaceFactory;
            if (ipWsFactoryLock != null && ipWsFactoryLock.SchemaLockingEnabled)
                ipWsFactoryLock.DisableSchemaLocking();
            if (releaseComObject)
                ComReleaser.ReleaseCOMObject(pFeatureClass);
        }
        catch (Exception ex)
        {
        }
    }
  • 相关阅读:
    用dockerFile和docker build命令 创建带两个数据卷的新镜像
    Docker 学习 3 镜像更多命令 docker commit 提交容器副本,使之成为一个新的镜像
    Docker学习笔记 2 更多的容器命令
    Docker的学习1 安装 与 基础篇
    SeekBar(拖动条)
    本周总结
    ProgressBar(进度条)
    Android对话框
    css语法
    css基础
  • 原文地址:https://www.cnblogs.com/publiter/p/14431564.html
Copyright © 2011-2022 走看看