再谈ArcGIS10许可初始化

今天一个朋友问了我一个问题,在arcgis9.3下的这句代码IGxDialog pGxDialog = newGxDialogClass(); 为什么在ArcGIS10下不能运行了。

    ArcGIS9.3ArcGIS10.0,产品的各个方面确实发生了不少的变化;但是至于像这种开发接口的变化无外乎下面三种情况:

接口名称变化了,或者是被其它接口所取代

接口封装所属的arcgis类库发生了变化

接口使用环境发生了变化

回到我们前面提到的问题,接口IGxDialog,ArcGIS10的开发帮助中可以查到,接口名称、封装的类库都没有发生变化,那么原因很有可能是发生在接口使用的环境发生变化了。

如下图所示,在ArcGIS10帮助中可以查到接口IGxDialog只能用在ArcGIS Desktop下使用,将程序许可初始化改为Desktop方式就可以正常运行了。

后来,把这个信息转告给我那位朋友,本以为可以解决了;但是,许可初始化时新的问题又出来了。

我们先来看看一个ArcObject开发初学者在许可初始化上常犯的一个错误。如下图所示,多数初学者都会许可初始化时勾选的选项越多,所拥有的权限越大。但实际情况恰好相反,ArcGIS许可初始化采用的第一项,即有多个选项时取的永远是第一个被勾选的。下图的这种情况,尽管五个选项都被勾选了,但程序中是按照第一个选项”ArcGIS Engine”来初始化的。

 

再回到前面提到的那个问题,尽管修改了许可初始化代码,但是如果把代码改成下面这样,程序还是不能正常运行也就不足为怪了

   staticclassProgram

   {

       ///<summary>

       /// The main entry point for theapplication.

       ///</summary>

       [STAThread]

       staticvoid Main()

       {           

            RuntimeManager.Bind(ProductCode.Engine);

            RuntimeManager.Bind(ProductCode.Server);

            RuntimeManager.Bind(ProductCode.EngineOrDesktop);

            RuntimeManager.Bind(ProductCode.Desktop);

            Application.EnableVisualStyles();

            Application.SetCompatibleTextRenderingDefault(false);

            Application.Run(newMainForm());

       }

   }

    上面那段代码,许可尽管初始化了四次,由于只有第一次初始化有效,所以程序的运行范围只是Engine这个范围,IGxDialog接口无法使用。

    下面我们将这段初始化代码稍作改动进行调试,来验证下前面关于许可初始化的论述是否正确。

 

通过上面三种情形下对代码调试所得结果,可以验证我们前面关于ArcGIS许可初始化的论述,“初始化多少次不重要,关键看谁排在第一号”

    注:这里我们要强调的是第三种情形的初始化,尽管ProductCode.EngineOrDesktop

中包含了Desktop;但如果程序运行的环境中同时拥有EngineDesktop许可,那么程序初始化时优先按Engine初始化。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值