1

我们的应用程序在 WinCE5.0 上运行(用 .net cf 编写)

由于某些原因,我们必须创建 MMF 文件供我们的应用程序使用(MMF 文件只能由我们的应用程序使用)。

现在我们注意到,在随机时间(我们无法准确找到何时以及在何种情况下)MMF 文件被其他进程使用,该进程将数据写入其上。这使我们的 MMF 文件损坏。

请让我们知道如何避免这种情况。

换句话说,我们希望 MMF 专门用于我们的应用程序,而不是共享。

谢谢。

4

1 回答 1

1

Windows CE 上的内存映射文件总是映射在虚拟地址空间的共享文件映射区域中。所有进程都可以对该区域进行读写访问。您无法保护该区域不被另一个进程覆盖。

.NET Compact Framework 本身使用内存映射来映射该区域中已加载的程序集,以避免将它们加载到进程槽中。我希望您会遇到其他问题,例如获取TypeLoadException,MissingMethodExceptionExecutionEngineException当 .NETCF 尝试从已损坏的程序集中 JIT 代码时。

您确定您没有关闭文件映射句柄或底层文件句柄吗?这可能会导致 Windows 认为内存是空闲的,并将其重用于其他目的。

于 2013-05-23T01:46:11.810 回答