C# 在C++和C应用程序之间异步通信的最简单方法是什么? 我有一个C++应用程序需要与C应用程序通信,Windows服务在同一台机器上运行。我希望C++应用程序能够写出尽可能多的消息,而不知道或不关心C应用程序何时读取它们,或者即使它正在运行。C应用程序可以随时唤醒,并请求最新的消息,即使C++应用程序已经关闭。

C# 在C++和C应用程序之间异步通信的最简单方法是什么? 我有一个C++应用程序需要与C应用程序通信,Windows服务在同一台机器上运行。我希望C++应用程序能够写出尽可能多的消息,而不知道或不关心C应用程序何时读取它们,或者即使它正在运行。C应用程序可以随时唤醒,并请求最新的消息,即使C++应用程序已经关闭。,c#,c++,messaging,C#,C++,Messaging,最简单的方法是什么?我认为MSMQ是这样的,但是我没有找到一个C++的好方法。我现在正在使用命名管道,但这并不是真的解决问题,因为我正在做的事情需要两个应用程序之间的连接,C++调用WristLink块直到读取发生。 目前,我能想到的最好的解决方案就是将消息写入一个文件,每个消息上都有一个时间戳,C应用程序会根据其最后一个更新时间戳定期检查。不过,这似乎有点粗鲁 实现这种消息传递的最简单方法是什么?MSMQ听起来肯定像您想要的,或者更基本的读写文件写入到公共区域,但是您需要观察文件上的争用情况

最简单的方法是什么?我认为MSMQ是这样的,但是我没有找到一个C++的好方法。我现在正在使用命名管道,但这并不是真的解决问题,因为我正在做的事情需要两个应用程序之间的连接,C++调用WristLink块直到读取发生。 目前,我能想到的最好的解决方案就是将消息写入一个文件,每个消息上都有一个时间戳,C应用程序会根据其最后一个更新时间戳定期检查。不过,这似乎有点粗鲁


实现这种消息传递的最简单方法是什么?

MSMQ听起来肯定像您想要的,或者更基本的读写文件写入到公共区域,但是您需要观察文件上的争用情况


.

我会使用命名管道。

实际上,最简单的方法是使用文件来存储消息。我建议使用像SQLite这样的嵌入式数据库,不过:这样做的好处是性能更好,而且是查询更改的好方法,即从timestamp>last_app_开始的消息中选择*。

这两个应用程序的要求并非总是在同一时间运行,但仍然能够互相发送消息,这无疑意味着您需要第三个组件来存储/排队消息。您是使用共享数据库/文件还是编写第三个充当消息存储的应用程序取决于您。无论哪种方式,您都会发现共享总是会引起争用


就我个人而言,我会在MSMQ之前查看0MQ,但两者都不能解决您的问题。sqlite数据库将是我的首选。

我打算建议文件机制是一种粗糙但简单有效的机制。性能比什么好?而不是在writer应用程序中附加到文件,并在reader应用程序中查找上次使用的读取位置,然后进行读取?诚然,读者还必须定期锁定文件以清空它。SQLite看起来是一个不错的选择。它非常容易使用,给了我所需要的灵活性和我所欣赏的简单性。