gpt4 book ai didi

c# - 向/从两个正在运行的应用程序发送/接收消息

转载 作者:太空狗 更新时间:2023-10-29 18:18:51 24 4
gpt4 key购买 nike

我有两个应用程序,名为 SENDERRECEIVER

RECEIVER 将由 SENDER 使用 System.Diagnostics.Process.Start 方法启动

RECEIVER 将以隐藏模式启动,因此它没有 MainWindowHandle

然后我们可以使用 Win32.WM_COPYDATA 向 RECEIVER 发送消息,但是它需要 MainWindowHandle 所以我们不能。

我需要的是能够通过任何方法定期发送和接收消息。

我查看了以下链接以获取有关 MainWindowHandle 的手册,但没有帮助:

Send message to a Windows process (not its main window)

一个解决方案可能是来自 System.Diagnostics.Process 的对象,它可以帮助我们向进程发送消息。

最佳答案

在两个进程之间共享信息有不同的方式。

首先,当您的应用程序扩展时,您必须考虑这两个进程是否始终在同一台机器上。

不同的机器

  • 使用 TCP/UDP 套接字连接(可能是最快的解决方案)
  • 使用MSMQ
  • 使用 Web 服务、WCF 或 Restful Web 服务。
  • 从数据库中的公共(public)条目读取。 (不推荐)
  • 命名管道(检查 this )(命名管道可以在同一台机器上或通过网络传输)

始终在同一台机器上。

首选:MSMQ

如果我是你,我会保留在不同机器上拥有进程的能力,所以我会像 Maarten 所建议的那样使用两个使用 MSMQ 进行通信的 Windows 服务。为什么?

  1. MSMQ 让您不会丢失消息(万一 RECEIVER 宕机)
  2. MSMQ 允许您在同一台机器或不同机器上拥有进程
  3. Windows 服务使您能够轻松启动/停止进程
  4. Windows 服务可以监控我的 SNMP,通常它们可以轻松地与 Windows 管理工具集成。

第二首选:Restful Web Service

如果您不想使用 MSMQ,我会使用 IIS 中托管的两个 Restful Web 服务来与两个进程进行通信。如果您遇到 RECEIVER 对来自 SENDER 的迟到消息不感兴趣的情况,它会很有用。

关于c# - 向/从两个正在运行的应用程序发送/接收消息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11358841/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com