我正在考虑我正在编写的应用程序的选项。一个应用程序生成另一个应用程序的多个副本。我希望能够在一天结束时调用那些衍生的应用程序来获取状态数据。
是否可以获取具有相同名称的正在运行的进程列表并调用它们以查找其ID(通过公共方法)及其状态数据(通过其他公共方法)?
答案 0 :(得分:4)
正在运行的进程不是程序集;这是操作系统在处理器上执行执行的可执行程序集的结果。
例如,让我们将一个程序集(exe或dll)视为构建RC模型平面的一组指令。指令不必“运行” - 即你不必建造飞机;他们可以坐在你的书架上。但是一旦你建造了这架飞机,这架飞机就没有关于它的指示是什么的概念。这架飞机正在飞行。现在假设您有一套RC模型直升机的说明。那么,出于某种原因,这些指令可能引用模型平面指令中的一些信息。但你不会指望直升机说明书向建造的飞机询问信息。
另一方面,你可以提前建造你的飞机和直升机,以便彼此沟通,也许是为了避免在半空中坠毁。
回到你的问题:你不能在正在运行的进程(模型平面)上调用任何方法,因为这是不可能的。即使您在可执行程序集本身上调用了方法,它也不会与任何正在运行的实例(进程)有任何关系;代码将从目标可执行文件(您的飞机说明)和编译中读取,作为您的调用程序可执行文件的一部分(您的直升机说明)。
但是,您可以构建可执行文件,以便它们可以通过进程间通信(IPC)进行通信。 (关于如何做到这一点有很多信息,只需谷歌吧。)不同之处在于应用程序设计事先一起行动并在彼此之间传递信息 - 就像您的模型平面和直升机 - 因此他们在执行时会这样做。