コード例 #1
0
        private bool Initialize()
        {
            if (RuntimeManager.ActiveRuntime == null)
            {
                return(false);
            }

            if (m_requestedProducts == null || m_requestedProducts.Count == 0)
            {
                return(false);
            }

            bool productInitialized = false;

            m_requestedProducts.Sort();
            if (!InitializeLowerProductFirst) //Request license from highest to lowest
            {
                m_requestedProducts.Reverse();
            }

            m_AoInit = new AoInitialize();
            esriLicenseProductCode currentProduct = new esriLicenseProductCode();

            foreach (int prodNumber in m_requestedProducts)
            {
                esriLicenseProductCode prod   = (esriLicenseProductCode)Enum.ToObject(typeof(esriLicenseProductCode), prodNumber);
                esriLicenseStatus      status = m_AoInit.IsProductCodeAvailable(prod);
                if (status == esriLicenseStatus.esriLicenseAvailable)
                {
                    status = m_AoInit.Initialize(prod);
                    if (status == esriLicenseStatus.esriLicenseAlreadyInitialized ||
                        status == esriLicenseStatus.esriLicenseCheckedOut)
                    {
                        productInitialized = true;
                        currentProduct     = m_AoInit.InitializedProduct();
                    }
                }

                m_productStatus.Add(prod, status);

                if (productInitialized)
                {
                    break;
                }
            }

            m_hasInitializeProduct = productInitialized;
            m_requestedProducts.Clear();

            //No product is initialized after trying all requested licenses, quit
            if (!productInitialized)
            {
                return(false);
            }

            //Check out extension licenses
            return(CheckOutLicenses(currentProduct));
        }