我想实现Python和C#之间的进程间通信,以便读取我的C#应用程序中由Python脚本编写的值。 在C#中,我使用的是MemoryMappedFile类:
publisher
它成功读取值,但之后它将内存映射文件中的值设置为零。因此,如果我再次读取内存映射文件(并且它还没有被Python脚本覆盖),我将只读零。我该如何防止这种情况?
我的python脚本如下所示:
= f.association :publisher
答案 0 :(得分:1)
由于您使用的是.CreateOrOpen
,因此您使用的是非Pesisted MemoryMappedFile(请参阅https://msdn.microsoft.com/en-us/library/dd997372(v=vs.110).aspx),这意味着GC可以免费使用GC
我正在对你的其余代码做一些假设,但它看起来像你CreateOrOpen并在一个方法中读取,因此GC一旦你完成阅读就可以自由处理内容,基本上这是一些记忆你的C#app拥有,它将正常GC。
在A的更广泛的上下文中你需要.CreateOrOpen
(即它在应用启动时打开(并保持引用)或在任何适当的“会话”对象中)或移到.CreateFromFile
到将其视为持久性的(如果需要/适当的话,可能会在开始时进行一些手动归零)。
TLDR; mmfSimPro
应该在app / class级别保存在不在局部变量中的字段中,因此它具有应用程序/类生存期的实时GC句柄,而不仅仅是读取方法的长度。