且构网

分享程序员开发的那些事...
且构网 - 分享程序员编程开发的那些事

ArcEngine开发 退出系统报错

更新时间:2022-08-14 18:10:20

主要原因是没有释放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,如需转载请自行联系原作者