使用MemoryMappedFile时允许尾部

时间:2014-06-02 08:46:32

标签: c# memory-mapped-files

我正在尝试使用MemoryMappedFile创建日志文件。代码看起来像这样:

_currentFile = MemoryMappedFile.CreateFromFile(filename, FileMode.Create, filename, MaxSize, MemoryMappedFileAccess.ReadWrite);
_currentFile.GetAccessControl().SetAccessRule(new AccessRule<MemoryMappedFileRights>("everyone", MemoryMappedFileRights.FullControl, AccessControlType.Allow));
_accessor = _currentFile.CreateViewAccessor();

日志记录工作正常,但当我尝试同时在文件上添加尾部时,我得到Permission denied

我试图找到一个关于如何允许在MemoryMappedFile上读取的答案,但我无法找到直接答案。所以,它可以让读者访问MemoryMappedFile吗? 换句话说,是否可以“拖尾”正在积极写入的MemoryMappedFile?

如果使用MemoryMappedFile作为日志文件,那么开始时不是一个好主意。然后我也想听听。如果这是一个愚蠢的问题,那么我道歉。

1 个答案:

答案 0 :(得分:0)

Hans Passant给出了这个问题的正确答案,所以让我在这里引述: &#34;操作系统刷新文件的内存更新及其发生顺序的确切时刻是完全不可预测的。这使得MMF更有效率。因此,它会锁定文件,阻止任何进程读取它。因为这样的过程除了陈旧的垃圾之外什么都看不到。此外,常见的日志记录库(如log4net)不提供MMF作为其众多可能的日志目标之一。所以,是的,糟糕的主意。&#34;

相关问题