我可以在另一个 运行 进程上调用 public 方法吗?

Can I call a public method on another running Process?

我正在考虑我正在编写的应用程序的选项。一个应用程序生成另一个应用程序的多个副本。我希望能够在一天结束时调用那些生成的应用程序来获取状态数据。

是否有可能获得 运行 个具有相同名称的进程的列表并调用它们以查找它们的 ID(通过 public 方法)和它们的状态数据(通过另一个 public 方法)?

一个运行进程不是程序集;这是操作系统在处理器上 执行 可执行程序集的结果。

例如,让我们将程序集(exe 或 dll)视为一组用于构建 RC 模型飞机的指令。说明不必是 "run"——即您不必建造飞机;他们可以坐在你的书架上。但是一旦你建造了飞机,飞机就不知道它的指令是什么或曾经是什么。这架飞机只是在做它的事情。现在假设您有一套 RC 模型直升机的说明。好吧,出于某种原因,这些说明可能 引用 模型平面说明中的一些信息。但你不会指望直升机说明书会向建造的飞机询问信息。

另一方面,您可能会提前建造飞机和直升机,以便它们相互通信,也许是为了避免在半空中坠毁。

所以回到你的问题:你不能在 运行 进程(你的模型平面)上调用任何方法,因为那是不可能的。即使您在可执行程序集本身上调用方法,它也不会与任何 运行 个实例(进程)有任何关系;代码将从目标可执行文件(您的飞机指令)中读取并编译作为调用者可执行文件(您的直升机指令)的一部分。

但是,您可以构建可执行文件,以便它们可以通过进程间通信 (IPC) 进行通信。 (有很多关于如何做到这一点的信息,只是 google 它。)不同之处在于应用程序被设计为 预先 一起行动并在彼此之间传递信息-- 就像你的模型飞机和直升机 -- 因此他们在执行时会这样做。