曾经认为自己对于ArcGIS 开发许可问题比较理解了,并小结在《ArcEngine10.x开发的许可问题》中。
01.权限问题
今天在调用GP时失败(插值式开发,使用的是他人框架),因为需要Advanced级别权限。有两点可以证明是权限不足:一是我在新建项目中测试成功,说明代码参数没问题;二是在问题框架调用clip(只需Basic级别)成功。更改变我的人生观念的是:同事们都说,既然权限不足,就在调用功能是再次初始化相应权限!在我的印象中,权限一旦初始化,就不可更改,除非结束程序。
02.还原真相
为了确认事实真相,我自己写了代码进行测试,在程序中更改权限是无效的。使用IAoInitialize接口进行初始化许可的原则:Initialize方法只能调用一次,多余无效,返回esriLicenseAlreadyInitialized ,LicenseControl勾选多个许可也是无效的。即在程序运行过程中,不能再次更改许可等级。
在ESRI官网上也找到原文:"Once an application has been initialized with a license, it cannot be reinitialized; an application is initialized with a license for the duration of its life. For example, you can‘t write an application that starts up with an ArcView license and later switches to ArcEditor."
03.修改权限
在修改已有框架的权限时,虽然有源代码,但更改LicenseControl或使用AoInitialize无效,打开程序被强制关闭,并报错-42,原来是OcxState作怪,必须全部手动删除,要么只有删除控件,全部重新拖放并布局。