一直在谷歌搜索,但无法找到答案。之前没有使用MemoryMappedFile
。刚刚阅读了它们以实现基本的IPC。在我投入时间原型之前,任何人都可以告诉我以下逻辑是否有效?
我考虑过使用非持久化的内存映射文件,以便在使用后自动清理它。
MemoryMappedFile
并写入。OpenExisting
执行MemoryMappedFile
MemoryMappedFile
读取数据并进行处理...... 流程A& B都知道文件的名称。
流程A创建的文件是否会保留,直到流程B处理掉它?
有什么机制,应该处理A而不是Dispose
文件并让进程B这样做?
如果这个逻辑不起作用,那么我正在考虑进程A等待进程B完成,但这并不理想。
感谢任何光线下降;)
答案 0 :(得分:1)
这将起作用,除了进程B需要在进程A关闭其句柄之前打开内存映射文件的句柄。原因是当最后一个句柄关闭时,内存映射文件被销毁。
(我假设我们在这里谈论Windows。)
编辑:我对此感兴趣并做了一些阅读......
执行此操作的最正确和最健壮的方法可能是进程B继承内存映射的句柄。一些链接:
我认为最后一个链接为您提供了世界上最知识渊博的Windows程序员之一的模型答案。请阅读文章下面的评论。