【问题标题】:Send commands from Windows Service to a running WinForm application将命令从 Windows 服务发送到正在运行的 WinForm 应用程序
【发布时间】:2014-07-03 00:47:36
【问题描述】:

我有两个独立的程序。一个是一个winform,它承载一个正在运行的进程,输出/输入通过表单重定向。这个过程是一个罐头产品,几乎没有机会自己修改它。

第二个程序是一个服务,它可以从正在运行的进程中获取数据,但它不直接与 winform 交互。

我的目标是从服务向 winform 发送一个字符串,然后与正在运行的进程进行交互。或者,我不介意能够直接向进程发送命令,但我敢打赌,如果不修改正在运行的进程源,这是不可能发生的。

我看过命名管道,但我不确定这是最好的方法。这两个程序都托管在同一台机器上。我只是不确定我的选择是什么。有任何想法吗? =)

【问题讨论】:

    标签: c# winforms service


    【解决方案1】:

    概述了 Windows 中可用的 IPC(进程间通信)选项的全部范围 on MSDN

    • 剪贴板
    • COM
    • 数据复制
    • DDE
    • 文件映射
    • 邮槽
    • 管道
    • RPC
    • Windows 套接字

    那么还有Windows之外的机制

    在所有这些中,命名管道可能最适合您的特定应用程序。我过去曾将它们用于类似的事情。它们易于设置和使用。

    【讨论】:

    • 假设我会继续研究命名管道。从我看到的 MSDN 示例看来,我的服务必须绝对生成 winform 进程。那是对的吗?这会让我的过程有点奇怪,哈哈
    • @Residualfail:不,进程可以彼此独立启动。两者都不能是另一个的孩子。
    【解决方案2】:

    有多种选择可以实现这种通信。主要可以使用Named pipes(WCF)、MSMQ

    【讨论】:

      猜你喜欢
      • 2017-08-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-04-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多