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.