C#:让我的程序在同一台机器上的正在运行的进程上调用方法

Posted

技术标签:

【中文标题】C#:让我的程序在同一台机器上的正在运行的进程上调用方法【英文标题】:C#: Have my program call methods on a running process on the same machine 【发布时间】:2011-03-13 16:58:23 【问题描述】:

我正在编写一个 C# 工具,它将对其他程序进行依赖性检查。我这样做的一种方法是遍历进程数组并查看是否找到了某个进程名称。如果是这样,我想在进程上调用某个方法(我知道它支持)。该方法返回一个字典。我想获取该字典输出并在我的依赖项检查器中使用它。

所有这些都发生在同一个工作站上,而不是通过网络。

我该怎么做?我的程序可以通信并调用进程上的方法,存储该结果吗?我必须使用 IPC 吗? .NET 远程处理?怎么样??

我从未使用过任何这些工具。我想知道从哪里开始>

有人可以给我一些建议吗?

我使用的是 .NET 2.0,所以我没有 WCF。还有其他想法吗?

【问题讨论】:

您不能直接在进程内的对象上调用方法,并且进程本身不会为此类交互公开任何方法。因此,您将需要使用某种 IPC。如果您编写了相关程序,则可以使用同步对象(如信号量或互斥锁)向其发送信号,但这仅在您不需要从进程外部注入数据时才有用。 升级到 .Net 4 可能比尝试在 WCF 之前做你想做的事情容易得多。 【参考方案1】:

是的,某种形式的 .NET Remoting 实现可能是您选择的方法。这当然需要您为这两个进程创建代码。

如果您无法控制其他进程并且该进程没有用于进程间通信的文档化接口,那么我认为您无法访问该进程中的方法。

【讨论】:

【参考方案2】:

您可以为此在 WCF 中使用命名管道:

http://www.switchonthecode.com/tutorials/wcf-tutorial-basic-interprocess-communication

本教程展示了我认为您正在尝试做的一个简单示例。

【讨论】:

链接打不开

以上是关于C#:让我的程序在同一台机器上的正在运行的进程上调用方法的主要内容,如果未能解决你的问题,请参考以下文章

在 .NET 中,同一台机器上的两个进程进行通信的最佳方式是啥?

同一台机器上的IPC...WCF

在同一台机器上的 .NET 应用程序之间复制对象的最佳方式是啥? [关闭]

使用 ASP .Net 管理本地机器上的进程

linux 进程间通信方式

同一台机器上的两个程序相互通信的最佳方式是啥