我制作了一个由Windows服务使用的VB6 EXE ActiveX,我想知道是否有可能在任务管理器中同时拥有这个exe的几个进程?
例如,我们使用AltovaXML_COM.exe来执行XSL转换,每次创建实例时都会创建一个新进程,因此在任务管理器中我们有几个独立的进程。
是否有可能使用VB6 exe ActiveX?
我们的exe Active X创建了svg文件,我们希望同时执行这几个文件的生成。
感谢您的帮助
答案 0 :(得分:1)
AX EXE的每个实例都将在任务管理器中显示为单独的条目(进程)。一个程序可以多次实例化AX EXE,或者多个程序可以多次实例化它。这不是AX EXE本身所做的事情,而是使用AX EXE的其他程序。
答案 1 :(得分:1)
是的,有可能。 ActiveX exe的默认行为是让每个创建对exe的引用的应用程序在单个进程中共享它的单个实例。如果要更改此设置,以便每个引用在单独的进程中创建自己的单独exe,请将Instancing
属性从MultiUse
更改为SingleUse
。
您不能在运行时以编程方式执行此操作;你必须在IDE中完成它。在“项目”窗口中,单击该类,您将在“属性”窗口中看到Instancing
属性。
您可能想要尝试的另一件事是线程模型。同样,默认值是处理所有引用(MultiUse)的一个进程,但也是处理所有引用的单个线程。要更改此设置,可以进入“项目”属性(“项目”菜单上的底部选择),然后查看对话框右下角的“线程模型”区域。
默认值是一个包含一个线程的线程池。如果将其更改为“每个对象的线程数”,则每次创建对ActiveX Exe的引用时都将创建一个新线程。您还可以更改线程池编号以向其添加更多线程。如果你这样做,线程是基于循环分配的:如果你的池中有五个线程和六个实例,那么两个实例(VB不会告诉你哪个,所以要注意)将共享第一个线程。
因此,如果您需要EXE的多个实例,请将instancing
属性更改为SingleUse
。但是,如果您希望增强性能和执行时间,您可能会发现一个进程中的多个线程也需要调查。