License Shutdown issue HELP!

832
0
02-24-2012 12:21 PM
RolandoChacon
New Contributor
I have a class library that initializes an esri license which is no problem, but when i call the .Shutdown() to release the license i get an OS Loader Lock.  Here is my class code. 
public class CheckOutLicenses
    {
        private IAoInitialize _aoInit;
        private IMMAppInitialize _mmAppInit;

        public CheckOutLicenses()
        {
            _aoInit = new AoInitializeClass();
            _mmAppInit = new MMAppInitializeClass();
        }

        public void GetEsriLicense(esriLicenseProductCode LicenseToCheckOut)
        {
            esriLicenseStatus EsriLicense = (esriLicenseStatus)_aoInit.IsProductCodeAvailable(LicenseToCheckOut);
            if (EsriLicense == esriLicenseStatus.esriLicenseAvailable)
            {
                //If the license is available check it out
                EsriLicense = _aoInit.Initialize(LicenseToCheckOut);
                if (EsriLicense != esriLicenseStatus.esriLicenseCheckedOut)
                {
                    throw new Exception("The Esri license requested could not be checked out");
                }
            }
        }

        public void ReleaseEsriLicense()
        {
            if (_aoInit == null)
                return;
                _aoInit.Shutdown(); <-- HERE IS WHERE THE OS LOADER LOCK THROWS AN EXCEPTION
        }

        public void GetArcFMLicense(mmLicensedProductCode LicenseToCheckOut)
        {
            mmLicenseStatus mmLS = _mmAppInit.IsProductCodeAvailable(LicenseToCheckOut);
            if (mmLS == mmLicenseStatus.mmLicenseAvailable)
            {
                //if the license is available check it out
                mmLicenseStatus arcFMLicenseStatus = _mmAppInit.Initialize(LicenseToCheckOut);
                if (arcFMLicenseStatus != mmLicenseStatus.mmLicenseCheckedOut)
                {
                    throw new Exception("The ArcFM license requested could not be checked out");
                }
            }
        }

        public void ReleaseArcLicense()
        {
            _mmAppInit.Shutdown(); 
        }
    }
}


I call the _aoInit.Shutdown() from main form which i instansiate the class at the form_Load().  I tried to call it from different locations even in the Dispose() function before it begins to dispose controls.

Any help would be greatly appreciated.
0 Kudos
0 Replies