我们的应用程序在 WinCE5.0 上运行(用 .net cf 编写)
由于某些原因,我们必须创建 MMF 文件供我们的应用程序使用(MMF 文件只能由我们的应用程序使用)。
现在我们注意到,在随机时间(我们无法准确找到何时以及在何种情况下)MMF 文件被其他进程使用,该进程将数据写入其上。这使我们的 MMF 文件损坏。
请让我们知道如何避免这种情况。
换句话说,我们希望 MMF 专门用于我们的应用程序,而不是共享。
谢谢。
我们的应用程序在 WinCE5.0 上运行(用 .net cf 编写)
由于某些原因,我们必须创建 MMF 文件供我们的应用程序使用(MMF 文件只能由我们的应用程序使用)。
现在我们注意到,在随机时间(我们无法准确找到何时以及在何种情况下)MMF 文件被其他进程使用,该进程将数据写入其上。这使我们的 MMF 文件损坏。
请让我们知道如何避免这种情况。
换句话说,我们希望 MMF 专门用于我们的应用程序,而不是共享。
谢谢。
Windows CE 上的内存映射文件总是映射在虚拟地址空间的共享文件映射区域中。所有进程都可以对该区域进行读写访问。您无法保护该区域不被另一个进程覆盖。
.NET Compact Framework 本身使用内存映射来映射该区域中已加载的程序集,以避免将它们加载到进程槽中。我希望您会遇到其他问题,例如获取TypeLoadException
,MissingMethodException
或ExecutionEngineException
当 .NETCF 尝试从已损坏的程序集中 JIT 代码时。
您确定您没有关闭文件映射句柄或底层文件句柄吗?这可能会导致 Windows 认为内存是空闲的,并将其重用于其他目的。