让多个 .NET 应用相互通信的最佳方式



所以,首先对不起我的英语不好。 回到任务,我有一个主应用程序,带有选项卡控件,每个选项卡都包含另一个 .NET exe。这些需要将信息发送到主应用程序。 示例: 选项卡中的每个 exe每秒都有一个随机生成的 guid,只要 exe "活动",主应用程序就需要捕获它并显示在列表视图中或其他内容中。

目前我正在使用SQLite,每次启动新的exe时,都会写入表中。在关闭它之前,此exe从表中删除recod。 在主要情况下,主应用程序检索此更新表并显示"活动"exe 和随机生成的 guid(每秒(。一切正常,问题是我需要放弃这种方法并删除SQLite的两个dll。

我尝试的是:

  • N 个客户端和主应用程序之间的 UDP 套接字,但不是那么稳定。有时一些前任被冻结了。(使用TCP会如此"繁重",其唯一目的是发送短字符串。对吧?
  • 更改另一个exe的窗口文本并通过processinfo检索它,但没有更新它,我只是第一次得到它字符串。

那么,有没有办法呢?在本地。就像,我不知道..用户32 发送消息 也许?还是这种方法对于一小串来说太侵入性了? 考虑到 N sub exe 是"内部"主进程,没有办法从子进程获取信息?

感谢您的帮助!

UDP 不保证数据包的传递。除非您在其之上实现自己的确认协议。但执行本身应该是稳定的。

使用 TCP 将提供类似的结果。你只需要处理重新连接的东西。

SendMessage/PostMessage是最简单直接的方法。但它不允许您直接传递字符串。看看 RegisterWindowMessage 以注册您自己的消息和 SendMessage HWND_BROADCAST句柄。而且你必须发送指向字符串的指针。由于 SendMessage 是同步的,因此您应该可以很好地处理该消息,但我还没有尝试过。另一种选择是将字符串存储在其他地方(注册表、文件(并使用 SendMessage 发送更新通知。主应用程序将读取并删除该注册表/文件记录。

具有 netNamedPipeBinding 的自承载 WCF 也应该可以工作。但这很可能是过于强大的解决方案。

相关内容

  • 没有找到相关文章

最新更新