使用MMF时获取读取文件的权限

时间:2011-06-19 14:34:13

标签: file-io ipc file-permissions memory-mapped-files locked-files

我有两个过程。一个使用.NET 4 MemoryMappedFiles写入内存映射文件,另一个使用.NET 3.5(MONO)中的FileStream读取文件。获得许可后一切正常,读取或写入文件没问题。问题是获得许可。

写MMF(作家):

MemoryMappedFile.CreateFromFile
                           (filenameToMap, FileMode.Create, "Something",
                           Marshal.SizeOf(objectToMap), MemoryMappedFileAccess.ReadWrite);

阅读MMF(读者):

new FileStream(filenameToMap, FileMode.Open, FileAccess.Read, FileShare.Delete | FileShare.ReadWrite);

首先我启动Writer,然后启动Reader。

我使用这种天真的方法测试了它:

while (true)
        {
            try
            {
                  new FileStream(mapPath + "map.mp", FileMode.Open, FileAccess.Read, FileShare.Delete | FileShare.ReadWrite);
                    break;
            }
            catch { }
        }

大约10秒后,Reader通常会获得许可,一切顺利进行。如果我会抓住异常,它会抛出:

  

IOException:在路径上共享违规   C:\路径在   System.IO.FileStream..ctor   (System.String路径,FileMode模式,   FileAccess访问,FileShare共享,   Int32 bufferSize,布尔匿名,   FileOptions选项)[0x00000] in   :0

知道为什么这两个进程从一开始就没有正确共享文件?

0 个答案:

没有答案