1、介绍

在我们利用arcgis engine编写程序时,或多或少会利用GP工具,会感受到GP工具带来的方便,但是GP工具好像有的时候并不是那么听话。比如最近小白我在写arcgis engine时调用GP工具就遇到不知所以然的Bug。

接下来我会介绍GP工具使用过程中某种bug以及相应的处理方式。

下面这个现象是在gp工具的输入参数,调用格式没有错误的情况下出现的bug,如果你的参数和调用的方式都有错误那就还不要利用提供的方法解决问题

2、bug

在一个程序的运行的前半段,使用GP工具没有问题,但是当程序越来越多后,gp工具调用就会报出错误,或者干脆不报错直接快速跳过,没有留下一条处理的数据。

在大量的调试后,发现gp工具如果使用不当在错误列表的中会弹出下面怎样的一句话:

“System.Runtime.InteropServices.COMException”类型的第一次机会异常在...发生。其中省略号中可能是程序名或者是.dll文件之类的这样的错误提示。

后来在网上寻找到可以输出gp工具报错的提示,代码如下:

  try{gp.Execute(pLineToPolygon,null);}catch (COMException e){string message = "";for (int i = 0; i < gp.MessageCount; i++){message += gp.GetMessage(i) + "\r\n";}MessageBox.Show(message + e.ToString());}

再次运行程序后,程序出现错误提示,错误如下图所示:

其中我们必须注意到特别的一句话:工作空间或数据源为只读

3、分析

为什么工作空间或数据源只读,本人思考很久,可能是工作空间或者数据源被锁住了,因为我们经常使用Arcgis知道,两个软件打开一个shp文件后就会提示文件被锁住了,那么这个是不是这个问题那。接下来就是尝试的过程。

前期一直纠结“System.Runtime.InteropServices.COMException”类型的第一次机会异常在...发生 这个问题但是并没有找到解决的方法,后期就开始往文件被锁的情况考虑,以及如何解锁的尝试。

废话不多说,经过一边一边的查询网页资料,结果发现:

IFeatureClass pFeatureClass = pFeatureWorkspace.OpenFeatureClass(shapeFileName);
会产生sr.lock文件,即读取文件夹里的数据AE会锁住文件夹 

有的时候还会出现文件被锁住:IFeatureClass.Search()之后会生成rd.lock文件,IFeatureClass.Insert()之后会产生wr.lock文件。

4、解决方法

对于文件夹被锁住可以利用以下代码释放锁:

 IWorkspaceFactory pWorkspaceFactory = new ShapefileWorkspaceFactoryClass();
’‘’
打开数据的代码
‘’‘
IWorkspaceFactoryLockControl control = pWorkspaceFactory as IWorkspaceFactoryLockControl;
if(control.SchemaLockingEnabled)
{                      control.DisableSchemaLocking();
}

本人的程序使用上面的代码就可以解决了,如果利用上面的代码运行还是出现上次提到的错误提示,那就是可能文件被锁住了,这可以采用下面的代码释放:

 System.Runtime.InteropServices.Marshal.ReleaseComObject(featureclass);System.Runtime.InteropServices.Marshal.ReleaseComObject(featurelayer);System.Runtime.InteropServices.Marshal.ReleaseComObject(layer);

5、结语

希望对AE的开发小伙伴们有一点帮助。

arcgis engine中的“System.Runtime.InteropServices.COMException”类型的第一次机会异常在...发生相关推荐

  1. “System.Runtime.InteropServices.COMException”类型的未经处理的异常在 mscorlib.dll 中发生 其他信息: 检索 COM 类工厂中 CLSID

    修改项目.net framework版本后出现的异常,解决办法:右键项目->属性->生成->目标平台为x86就解决了.

  2. System.Runtime.InteropServices.COMException (0x80040154): 没有注册类 (异常来自 HRESULT:0x80040154 (REGDB_E_CL

    1.系统用到的第三方组件未注册 在警告里面找 然后去对应的组件管理员运行注册 2.项目的anycpu改成x86

  3. System.Runtime.InteropServices.COMException 检索COM类工厂中CLSID{xxxxxxxxx}的组件时失败解决方法...

    iis7.5中设定应用程序池中<进程模型>中<标识>为localSystem 提示:System.Runtime.InteropServices.COMException: 命 ...

  4. c#向word中添加图片的时候出现错误System.Runtime.InteropServices.COMException: 这不是有效文件名

    参考 https://www.cnblogs.com/louby/p/6427626.html https://www.cnblogs.com/fuyun2000/archive/2013/06/16 ...

  5. 异常详细信息: System.Runtime.InteropServices.COMException: 无效的类别字符串

    无效的类别字符串 说明: 执行当前 Web 请求期间,出现未处理的异常.请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息. 异常详细信息: System.Runtime.Inte ...

  6. System.Runtime.InteropServices.COMException (0x8004E00F): COM+ 无法与 Microsoft 分布式事务协调程序交谈 (异常来自 HRESU

    错误信息: System.Runtime.InteropServices.COMException (0x8004E00F): COM+ 无法与 Microsoft 分布式事务协调程序交谈 (异常来自 ...

  7. System.Runtime.InteropServices.COMException (0x80040154)错误

    用windwos服务.owc.excle组件生成Excel文档,然后通过邮件自动发生给公司管理层,本来在本地测试.配置都正常,但是部署到Window 2003服务器上,服务启动后,日志文件记录程序出错 ...

  8. System.Runtime.InteropServices.COMException (0x80004005): 无法创建目录或文件

    下单员QQ远程求助,百试不得解 调试时出错信息: 自定义工具错误: "代码生成器 'ReportCodeGenerator' 失败.异常堆积 = CrystalDecisions.Share ...

  9. System.Runtime.InteropServices.COMException

    System.Runtime.InteropServices.COMException (0x80040154) 因为EncryptCom.dll 没有注册 解决办法:注册EncryptCom.dll ...

最新文章

  1. 2015年美军将具备60分钟内打击全球目标能力(图)
  2. c实现的trim函数
  3. powershell 备份文件脚本
  4. 《黑天鹅》读书笔记(part3)--那些声称注重过程而非结果的人并没有完全讲真话
  5. 计算机系统基础:CPU相关知识笔记
  6. 使用python读取iphone文件_如何在连接的iPhone上用Python从windows7访问照片?
  7. Android中英文单词录入背诵软件
  8. PIX525-IPSEC-×××配置
  9. 常用汉字3500——文字识别数据准备
  10. vs2010中文旗舰版,vs2013,vs2015企业版激活秘钥
  11. Qt源码在VC环境下编译(以VC14下Qt5.9.1和Qt5.4.0为例,包含icu和QtWebkit模块)
  12. matlab2017a安装出现license checkout failed Error-8
  13. vue移动端实现word在线预览
  14. flashfxp修改服务器密码,flashfxp服务器端设置
  15. 三点估算与类比估算_通过将东西塞进盒子来估算
  16. 高斯日记python实现
  17. 操作系统简介及编程语言
  18. 如何提高C语言程序的可读性
  19. java qq聊天界面_【附源码】用Java写了一个类QQ界面聊天小项目,可在线聊天!...
  20. LeetCode刷题之575.分糖果

热门文章

  1. java synchronized 变量_Java Synchronized的用法
  2. Excel表格中快速将公式运用到一整列
  3. Animation Rigging创建模板动画(三)
  4. 【转载】前端上传文件,python作为后端接收并保存到本地--Tornado上传文件--分片上传文件--更换pip下载源
  5. C++处理YUV格式视频【帧平均法】
  6. Pytorch 中 LSTMCell介绍
  7. mysql orm .net_.NET(C#)有哪些主流的ORM框架,SqlSugar,Dapper,EF还是...
  8. jquery上传头像
  9. 飞机软装的全球与中国市场2022-2028年:技术、参与者、趋势、市场规模及占有率研究报告
  10. java不要登录发送邮件noReply