vb.net - 如何有选择地与程序的两个实例通信?

标签 vb.net multiple-instances system.diagnostics

我是 VB 的新手,如果这是一个简单的问题,请原谅我。

我将在一个程序中运行多个耗时(单线程)进程(允许通过 COM 实现自动化)。因此,为了节省一些时间,我想打开该程序的两个或多个实例并同时运行它们。但是我尝试在程序上做的任何事情,都会发生在第一个打开的程序上。这就是我的目的,我的意图是打开程序的两个实例(正确执行),并在每个实例中打开一个新文档(它所做的是在 myProcess0 中打开两个新文档,而在 myProcess1 中没有打开。注意: 我激活了 System.Diagnostics 命名空间。

    Using myProcess0 As Process = Process.Start(programPath)
        myProcess0.WaitForInputIdle()
        pws0 = New COMprogram.Document
    End Using

    Using myProcess1 As Process = Process.Start(programPath)
        myProcess1.WaitForInputIdle()
        pws1 = New COMprogram.Document
    End Using

注意:COM 程序不允许为程序创建句柄(就像 Matlab 允许使用 MLApp.MLApp)

任何帮助将不胜感激!提前致谢!

最佳答案

这不完全是解决方案,而是我目前的“粗暴”解决方法。如果您的迭代彼此独立并且希望在同一台计算机上使用程序的多个实例来执行这些迭代(但出于某种我不知道的原因,创建的任何“应用程序”对象仅指向第一个应用程序实例)。

我正在做的是通过使用“桌面”来欺骗代码:http://technet.microsoft.com/en-us/sysinternals/cc817881.aspx

我只是在每个桌面上打开 VB 代码和一个应用程序实例,由于某种原因,VB 代码只与在当前桌面上打开的应用程序交互,而不与其他桌面上打开的应用程序交互。 Matlab 也会以某种方式发生这种情况。出于某种原因,所有 Matlab Application 对象都引用第一个实例。

关于vb.net - 如何有选择地与程序的两个实例通信?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17726019/

相关文章:

sql-server - 从绑定(bind)的 DataGridView 中删除时, Entity Framework 6 在应该使用 DELETE 时使用 UPDATE

java - 无法使用来自不同类的 JButton 打开新的 JFrame

C# Process.exited 在窗口关闭之前不会被调用

c# - WPF Metro UI 图表 - 负值

javascript - 关于... Z-索引?

C# 实例复制/传递对象引用与 Java 不同吗?

mysql - 当表具有同名列时多重内连接

c# - Process.Start() 可以考虑系统路径吗?

c# - 使用 System.Diagnostic Process 时,我会错过进程开始和捕获输出开始之间的一些输出行吗?

c# - 存储要在 Azure 角色之间共享的静态文件