当有多个实例时如何与.net进程通信
Posted
技术标签:
【中文标题】当有多个实例时如何与.net进程通信【英文标题】:How to communicate with .net processes when there are multiple instances of them 【发布时间】:2010-02-03 13:13:30 【问题描述】:我在同一台机器上运行相同的 Windows Forms .net 3.5 SP1 C# 应用程序的多个实例。
现在我希望能够通过 .net 与他们进行通信,一次一个实例。 最简单的方法是什么?
我阅读了一些关于 WCF 的信息,但我只找到了使用一台服务器和一台客户端的示例。但在我的情况下,所有正在运行的实例都是服务器,我只需要与其中一个进行讨论。
我想像这样:
Process[] procs = Process.GetProcessesByName("ProcessName");
foreach (Process p in procs)
// Communicate with process here
【问题讨论】:
【参考方案1】:您需要某种订阅/回调机制。不要遍历项目,而是让每个应用程序订阅一个 wcf 服务方法。
示例:http://idunno.org/archive/2008/05/29/wcf-callbacks-a-beginners-guide.aspx
【讨论】:
@Gerrie Schenck:这是个好主意。然而,这意味着我仍然需要 1 个单独的进程,我确信它只启动了一次。理想情况下,我希望在同一个应用程序中完成所有工作。 那么您可能不需要 WCF,而只需一个控制器,其中包含表单可以订阅的事件。 好的,但是应该怎么做呢?每个进程都有自己的控制器,因此不会有任何进程间通信。我想我会尝试采纳您的建议并实施一个单独的进程作为服务器。因此,每次进程启动时,它都会尝试订阅服务器进程,如果此进程不可用,它将启动一个新进程并随后注册。【参考方案2】:简单的事情是数据库:),顺便说一句,WCF 支持与 NetPeerTcpBinding 的点对点通信
【讨论】:
以上是关于当有多个实例时如何与.net进程通信的主要内容,如果未能解决你的问题,请参考以下文章