zoukankan      html  css  js  c++  java
  • ArcGIS Engine中正确释放打开资源<转>

    AE中对MDB,SDE等数据库操作时,打开后却往往不能及时释放资源,导致别人操作提示对象被锁定。

    很多帖子说了很多原理,看的也烦且不实用,比如一句话概括的用System.Runtime.InteropServices.Marshal.ReleaseComObject(object o)释放,说的很不清楚,很多人试过觉的释放不掉。

    事实上,的确是用该方法,但释放的技巧在于,新建几个AE对象就要逐步释放几个,例如:

    IWorkspaceFactory Fact = new AccessWorkspaceFactoryClass ();

    IFeatureWorkspace Workspace = Fact.Open(Propset,0) as IFeatureWorkspace;

      IFeatureClass Fcls = Workspace.OpenFeatureClass ("District");

    IFeatureLayer Fly = new FeatureLayerClass();

    ……

    IFeature pf

    IField pfield

    ……

    再对象运行结束时释放,如:

    System.Runtime.InteropServices.Marshal.ReleaseComObject(Fact);

    System.Runtime.InteropServices.Marshal.ReleaseComObject(Workspace);

    System.Runtime.InteropServices.Marshal.ReleaseComObject(Fcls);

    System.Runtime.InteropServices.Marshal.ReleaseComObject(Fly);

    System.Runtime.InteropServices.Marshal.ReleaseComObject(pf);

    System.Runtime.InteropServices.Marshal.ReleaseComObject(pfield);

    看到吧,千万不要以为你释放了等级最高的 IWorkspaceFactory, IWorkspace就算完事了。没办法,AE有时就这么难以理解的麻烦。

     

    原文地址 

    版权声明:本博原创文章可以被转载,但是在未经本人许可前,不得用于任何商业用途或其他以盈利为目的的用途。如需转载,请在转载时声明作者、保留出处。本人保留对本文的一切权利。 作者:AllenRobin Blog:http://gisrsman.cnblogs.com
  • 相关阅读:
    解决struts2在(IE,Firefox)下载文件名乱码问题
    Quartz 使用
    SpringBoot 全局异常处理器
    数据结构学习(五) Java链表实现队列
    数据结构学习(四) Java链表实现
    Linux 端口占用情况查看
    数据结构学习(三) 基于动态数组实现队列Queue
    数据结构学习(二)基于动态数组实现Stack(栈)
    SpringBoot 定时任务
    数据结构学习(一) Java中的动态数组实现
  • 原文地址:https://www.cnblogs.com/GISRSMAN/p/4551385.html
Copyright © 2011-2022 走看看