ArcEngine开发 退出系统报错

简介:

主要原因是没有释放AO资源

public class Form1 : System.Windows.Forms.Form
{
    private ESRI.ArcGIS.esriSystem.IAoInitialize m_AoInitialize = new ESRI.ArcGIS.esriSystem.AoInitializeClass();

 

    private void Form1_Load(object sender, System.EventArgs e)
    {
        // 创建新的AoInitialize对象
        if ( m_AoInitialize == null)
        {
            System.Windows.Forms.MessageBox.Show("初始化失败,程序不能运行!");
            this.Close();
        }
        // 判断产品是否有效
        ESRI.ArcGIS.esriSystem.esriLicenseStatus licenseStatus = (esriLicenseStatus)
            m_AoInitialize.IsProductCodeAvailable(
            ESRI.ArcGIS.esriSystem.esriLicenseProductCode.esriLicenseProductCodeEngine);
        if (licenseStatus == ESRI.ArcGIS.esriSystem.esriLicenseStatus.esriLicenseAvailable )
        {
            licenseStatus = (ESRI.ArcGIS.esriSystem.esriLicenseStatus)
                m_AoInitialize.Initialize(ESRI.ArcGIS.esriSystem.esriLicenseProductCode.esriLicenseProductCodeEngine);
            if (licenseStatus != ESRI.ArcGIS.esriSystem.esriLicenseStatus.esriLicenseCheckedOut )
            {
               System.Windows.Forms.MessageBox.Show("初始化失败,应用程序不能运行!");
               this.Close();
            }
        }
        else
        {
            System.Windows.Forms.MessageBox.Show("ArcGIS Engine产品无效,此程序不能运行!");
            this.Close();
        }
    }
   
    private void Form1_Closing(object sender, System.ComponentModel.CancelEventArgs e)
    {
        // 释放COM对象并关闭AoInitialize对象
        ESRI.ArcGIS.Utility.COMSupport.AOUninitialize.Shutdown();
        m_AoInitialize.Shutdown();
 }
}

分类:  ESRI

本文转自Lei Zhang的博客博客园博客,原文链接:http://www.cnblogs.com/threestone/archive/2010/07/20/1781396.html,如需转载请自行联系原作者
目录
相关文章
软件开发必备流程,用户名设置为唯一,Navicate如何将user设置为唯一,开发前一定要先设置,要不改不好改,alt + enter快速创建方法
软件开发必备流程,用户名设置为唯一,Navicate如何将user设置为唯一,开发前一定要先设置,要不改不好改,alt + enter快速创建方法
|
人工智能 Cloud Native Devops
也许是时候停止编写详细的操作手册了
也许是时候停止编写详细的操作手册了
66 0
|
网络安全 数据安全/隐私保护 Windows
[笔记] Windows VBS脚本实现自动输入 解放双手 自动测试
[笔记] Windows VBS脚本实现自动输入 解放双手 自动测试
342 0
|
Shell Linux 网络安全
[笔记]Linux Shell脚本实现自动输入 解放双手 自动测试
[笔记]Linux Shell脚本实现自动输入 解放双手 自动测试
138 0
|
运维 Shell 应用服务中间件
【运维知识高级篇】超详细的Shell编程讲解3(if判断+Shell菜单+case流程判断+批量创建删除用户+猜数字小游戏)
【运维知识高级篇】超详细的Shell编程讲解3(if判断+Shell菜单+case流程判断+批量创建删除用户+猜数字小游戏)
182 1
|
Ubuntu Linux Windows
项目实战:Qt终端命令模拟工具 v1.0.0(实时获取命令行输出,执行指令,模拟ctrl+c中止操作)
在Qt软件中实现部分终端控制命令行功能,使软件内可以又好的模拟终端控制,提升软件整体契合度。
项目实战:Qt终端命令模拟工具 v1.0.0(实时获取命令行输出,执行指令,模拟ctrl+c中止操作)
|
NoSQL Java 数据库
基于C#的ArcEngine二次开发40:如何删除临时GDB文件
基于C#的ArcEngine二次开发40:如何删除临时GDB文件
|
自然语言处理 Unix Linux
最快捷的Linux命令查询工具来了:「我该怎么做XX」,一句话自动返回操作指南
云栖号资讯:【点击查看更多行业资讯】在这里您可以找到不同行业的第一手的上云资讯,还在等什么,快来! 无论你是Linux萌新用户还是老司机,使用命令行总会遇到不懂的问题。 遇到问题要么去论坛询问、谷歌搜索,要么查自带命令手册(RTFM),过程耗时,结果也不直观。
最快捷的Linux命令查询工具来了:「我该怎么做XX」,一句话自动返回操作指南
ArcEngine“不能再打开其它表了”的解决方法
查询的时候遇到ArcEngine“不能再打开其它表了”,突然间想起项目经理给我以前说的要把游标释放掉,当时不明白为什么,认为这个没有什么的呀,不就是一条条取数据吗?这次却发现这个问题了,原来是查询过于频繁,游标来不及释放,所以会出现问题,用System.Runtime.InteropServices.Marshal.ReleaseComObject()就可以解决。
763 0