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)); }