再谈ArcGIS10许可初始化
来源:互联网 发布:图片修图用什么软件 编辑:程序博客网 时间:2024/04/30 00:32
今天一个朋友问了我一个问题,在arcgis9.3下的这句代码IGxDialog pGxDialog = new GxDialogClass(); 为什么在ArcGIS10下不能运行了。
从ArcGIS9.3到ArcGIS10.0,产品的各个方面确实发生了不少的变化;但是至于像这种开发接口的变化无外乎下面三种情况:
n 接口名称变化了,或者是被其它接口所取代
n 接口封装所属的arcgis类库发生了变化
n 接口使用环境发生了变化
回到我们前面提到的问题,接口IGxDialog,在ArcGIS10的开发帮助中可以查到,接口名称、封装的类库都没有发生变化,那么原因很有可能是发生在接口使用的环境发生变化了。
如下图所示,在ArcGIS10帮助中可以查到接口IGxDialog只能用在ArcGIS Desktop下使用,将程序许可初始化改为Desktop方式就可以正常运行了。
后来,把这个信息转告给我那位朋友,本以为可以解决了;但是,许可初始化时新的问题又出来了。
我们先来看看一个ArcObject开发初学者在许可初始化上常犯的一个错误。如下图所示,多数初学者都会许可初始化时勾选的选项越多,所拥有的权限越大。但实际情况恰好相反,ArcGIS许可初始化采用的第一项,即有多个选项时取的永远是第一个被勾选的。下图的这种情况,尽管五个选项都被勾选了,但程序中是按照第一个选项”ArcGIS Engine”来初始化的。
再回到前面提到的那个问题,尽管修改了许可初始化代码,但是如果把代码改成下面这样,程序还是不能正常运行也就不足为怪了
static class Program
{
/// <summary>
/// The main entry point for the application.
/// </summary>
[STAThread]
static void Main()
{
RuntimeManager.Bind(ProductCode.Engine);
RuntimeManager.Bind(ProductCode.Server);
RuntimeManager.Bind(ProductCode.EngineOrDesktop);
RuntimeManager.Bind(ProductCode.Desktop);
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Application.Run(new MainForm());
}
}
上面那段代码,许可尽管初始化了四次,由于只有第一次初始化有效,所以程序的运行范围只是Engine这个范围,IGxDialog接口无法使用。
下面我们将这段初始化代码稍作改动进行调试,来验证下前面关于许可初始化的论述是否正确。
通过上面三种情形下对代码调试所得结果,可以验证我们前面关于ArcGIS许可初始化的论述,“初始化多少次不重要,关键看谁排在第一号”.
注:这里我们要强调的是第三种情形的初始化,尽管ProductCode.EngineOrDesktop
中包含了Desktop;但如果程序运行的环境中同时拥有Engine、Desktop许可,那么程序初始化时优先按Engine初始化。
- 再谈ArcGIS10许可初始化
- 再谈ArcGIS10许可初始化
- arcgis10.5 无法启动许可
- arcgis10 licenseManager许可服务:未启动
- ArcGIS10.2许可无法启动解决办法
- ArcEngine 许可初始化
- Engine许可初始化
- ArcGIS Engine许可初始化
- 细说AE许可初始化
- ArcEngine 许可初始化问题
- ArcGIS 10 许可初始化
- ArcGIS10 不联网环境下许可注册方法
- ArcObjects拾遗之一——初始化许可
- ArcEngine 10.0以上 许可检查及初始化
- AE中许可初始化(转载)
- 许可
- arcigis engine 开发许可初始化代码(包括9.3,10.0和10.1)
- ArcGIS10安装
- 接口和抽象类的区别
- 惊奇发现手机短信验证的新方法及分析
- 四种多服务器共享session的方法
- 为什么指向字符串的指针内容有时可变有时不可变?
- 老是忘记掉如何查看共享和ftp的方法
- 再谈ArcGIS10许可初始化
- Linux pci驱动分析
- EMOS1.5的配置过程 (能发邮件,不能收邮件)
- Google Caffeine 大规模实时增量索引
- 【加密/解密】Botan 中的 AES 加密算法实例
- Java 透析C/S和B/S结构
- 关于telnet的远程连接
- 修改Ubuntu11.10的默认登录环境
- junit