1

我制作了一个 Windows 服务使用的 VB6 EXE ActiveX,我想知道是否有可能在任务管理器中同时拥有这个 exe 的多个进程?

例如,我们使用 AltovaXML_COM.exe 执行 XSL 转换,每次创建实例时都会创建一个新进程,因此在任务管理器中我们有多个独立进程。

VB6 exe ActiveX有可能吗?

我们的 exe Active X 创建了 svg 文件,我们希望同时生成多个这些文件。

谢谢你的帮助

4

2 回答 2

2

对的,这是可能的。ActiveX exe 的默认行为是让创建对您的 exe 的引用的每个应用程序在单个进程中共享它的单个实例。如果要更改此设置,以便每个引用在单独的进程中创建自己的单独 exe,则将Instancing属性从更改MultiUseSingleUse

您不能在运行时以编程方式执行此操作;您必须在 IDE 中执行此操作。在“项目”窗口中,单击该类,您将Instancing在“属性”窗口中看到该属性。

您可能想要尝试的另一件事是线程模型。同样,默认是一个处理所有引用的进程(MultiUse),但也是一个处理所有引用的单个线程。要更改此设置,您可以进入项目属性(项目菜单的底部选择)并查看对话框右下方的线程模型区域。

默认是一个线程池,只有一个线程。如果您将其更改为“每个对象的线程”,您将在每次创建对 ActiveX Exe 的引用时创建一个新线程。您还可以更改线程池编号以向其中添加更多线程。如果你这样做,线程是在循环的基础上分配的:如果你的池中有五个线程和六个实例,其中两个实例(VB 不会告诉你哪个,所以要小心)将共享第一个线。

因此,如果您需要 EXE 的多个实例,请将instancing属性更改为SingleUse. 但是,如果您希望提高性能和执行时间,您可能会发现一个进程中的多个线程也是需要研究的。

于 2018-05-02T05:37:47.850 回答
1

AX EXE 的每个实例都将在任务管理器中显示为单独的条目(进程)。一个程序可以多次实例化一个 AX EXE,或者多个程序可以多次实例化它。这不是 AX EXE 本身所做的事情,而是使用 AX EXE 的其他程序所做的事情。

于 2018-04-27T16:10:56.680 回答