曾經認為自己對於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作怪,必須全部手動刪除,要么只有刪除控件,全部重新拖放並布局。