制作了一个显示图表的activex控件。当只在一个IE中打开时,能够正常显示图表。但是在两个IE中分别打开这张网页时,总有一张网页会显示不正常。我觉得每个控件实例对象都应该有各自的进程空间,因此实在弄不明白为什么他们会互相干涉呢?请问各位又没有遇到过这样的问题?谢谢。

解决方案 »

  1.   

    进程内的服务器和进程外的服务器 
    ActiveX 部件通过客户端/服务器关系与应用程序— 及与部件相互之间— 交互作用。客户端是使用部件功能的应用程序代码或部件。服务器是部件及其关联的对象。例如,假设应用程序使用 ActiveX 控件来提供一个标准的雇员窗体,供公司的多种应用程序使用。提供雇员窗体的 ActiveX 控件就是服务器,使用这个控件的应用程序就是服务器的客户端。AcitveX 部件可能和客户端的应用程序运行在同一个进程中,也可能运行在不同的进程中,这要取决于该 ActiveX 部件是如何实现的。例如,如果应用程序使用一个部件,该部件是一个 ActiveX-enabled 应用程序的一部分,则它在一个单独的进程中运行。如果该部件已作为动态链接库(.dll 文件)中的一个可编程对象被实现,则它运行在和应用程序同一进程中。通常,如果 ActiveX 部件作为一个可执行文件(.exe 文件)的一部分被实现,它就是一个进程外的服务端,并且运行在它自己的进程中。如果,它已作为一个动态链接库被实现,则它是一个进程内的服务端,并且和客户端应用程序运行在同一个进程中。通常,使用进程内的服务端的应用程序比使用进程外的服务端的应用程序执行起来要快些,因为应用程序不必跨越进程的边境来使用对象的属性,方法和事件。下列表示出如何实现不同类型的部件:部件  服务器类型 
    ActiveX-enabled 应用程序 进程外的服务器 
    代码部件 进程内的服务器或者进程外的服务器 
    ActiveX 控件 进程内的服务器 
    ActiveX 文档 进程内的服务器或者进程外的服务器 
    使用进程内的服务器部件,是优化应用程序性能的一种方法。另一种方法是使用事前绑定。