C# 我可以在另一个正在运行的进程上调用公共方法吗?
我正在考虑我正在编写的应用程序的选项。一个应用生成另一个应用的多个副本。我希望能够在一天结束时调用这些衍生的应用程序来获取状态数据C# 我可以在另一个正在运行的进程上调用公共方法吗?,c#,process,C#,Process,我正在考虑我正在编写的应用程序的选项。一个应用生成另一个应用的多个副本。我希望能够在一天结束时调用这些衍生的应用程序来获取状态数据 是否可以获取具有相同名称的正在运行进程的列表,并调用它们以查找它们的id(通过公共方法)和状态数据(通过另一个公共方法)?正在运行的进程不是程序集;它是操作系统在处理器上执行可执行程序集的结果 例如,让我们将程序集(exe或dll)视为用于构建RC模型平面的一组指令。指令不必是“运行”的——也就是说,你不必建造飞机;他们可以坐在你的书架上。但是一旦你建造了飞机,飞机
是否可以获取具有相同名称的正在运行进程的列表,并调用它们以查找它们的id(通过公共方法)和状态数据(通过另一个公共方法)?正在运行的进程不是程序集;它是操作系统在处理器上执行可执行程序集的结果 例如,让我们将程序集(exe或dll)视为用于构建RC模型平面的一组指令。指令不必是“运行”的——也就是说,你不必建造飞机;他们可以坐在你的书架上。但是一旦你建造了飞机,飞机就不知道它的指令是什么。飞机只是在做它的事情。现在让我们假设您有一套关于RC模型直升机的说明。由于某种原因,这些说明可能引用了模型平面说明中的一些信息。但你不会指望直升机说明书会向制造的飞机询问信息 另一方面,你可以提前建造你的飞机和直升机,这样它们就可以互相沟通,也许是为了避免在空中坠毁 回到你的问题上来:你不能在正在运行的进程(你的模型平面)上调用任何方法,因为那是不可能的。即使您对可执行程序集本身调用了方法,也与任何正在运行的实例(进程)无关;代码将从目标可执行文件(飞机指令)中读取,并作为调用方可执行文件(直升机指令)的一部分进行编译
但是,您可以构建可执行文件,以便它们可以通过进程间通信(IPC)进行通信。(有很多关于如何做到这一点的信息,只需谷歌一下。)不同之处在于,应用程序是事先设计好的,可以一起行动,并在彼此之间传递信息——就像你的模型飞机和直升机一样——因此,它们在执行时会这样做。正在运行的进程不是一个程序集;它是操作系统在处理器上执行可执行程序集的结果 例如,让我们将程序集(exe或dll)视为用于构建RC模型平面的一组指令。指令不必是“运行”的——也就是说,你不必建造飞机;他们可以坐在你的书架上。但是一旦你建造了飞机,飞机就不知道它的指令是什么。飞机只是在做它的事情。现在让我们假设您有一套关于RC模型直升机的说明。由于某种原因,这些说明可能引用了模型平面说明中的一些信息。但你不会指望直升机说明书会向制造的飞机询问信息 另一方面,你可以提前建造你的飞机和直升机,这样它们就可以互相沟通,也许是为了避免在空中坠毁 回到你的问题上来:你不能在正在运行的进程(你的模型平面)上调用任何方法,因为那是不可能的。即使您对可执行程序集本身调用了方法,也与任何正在运行的实例(进程)无关;代码将从目标可执行文件(飞机指令)中读取,并作为调用方可执行文件(直升机指令)的一部分进行编译
但是,您可以构建可执行文件,以便它们可以通过进程间通信(IPC)进行通信。(有很多关于如何做到这一点的信息,只需谷歌一下。)不同之处在于,应用程序是事先设计好的,可以一起行动,并在彼此之间传递信息——就像模型飞机和直升机一样——因此它们在执行时会这样做。你说的是IPC进程间通信。看看MSMQ和HTTP通信之类的东西。这将允许您只需轮询他们的任何信息状态!如果您可以控制其他应用程序的编译。生成的应用程序不能将其状态写入stdout,以便您在生成端进行分析吗?您正在谈论IPC进程间通信。看看MSMQ和HTTP通信之类的东西。这将允许您只需轮询他们的任何信息状态!如果你可以控制其他应用程序的编译。生成的应用程序不能将其状态写入stdout,以便你在生成端进行解析吗?是的,说得好,比我在评论中的尝试要好!谢谢-我需要一个方向正确的方向盘。匿名管道看起来像是我要找的。虽然我需要双工通信:“嘿,你的状态是什么?”“我的状态是x”,所以我需要命名管道。IPC对我来说是全新的(以防不明显)。是的,说得好,比我在评论中的尝试要好!谢谢-我需要一个方向正确的方向盘。匿名管道看起来像是我要找的。虽然我需要双工通信:“嘿,你的状态是什么?”“我的状态是x”,所以我需要命名管道。IPC对我来说是全新的(以防不明显。)