1

我有两个过程。一个使用 .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:在 System.IO.FileStream..ctor 的路径 C:\path 上共享冲突(System.String 路径、FileMode 模式、FileAccess 访问、FileShare 共享、Int32 bufferSize、布尔匿名、FileOptions 选项)[0x00000] in :0

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

4

0 回答 0