两个应用程序可以创建具有相同名称的内存映射文件吗?

问题描述

我在MSDN上阅读

内存映射文件包含虚拟内存中文件内容文件和内存空间之间的这种映射使包括多个进程的应用程序可以通过直接读写内存来修改文件

来源: https://docs.microsoft.com/en-us/dotnet/standard/io/memory-mapped-files

在另一个论坛上:

内存映射文件可以在多个进程之间共享。可以使用创建文件的进程分配的通用名称,将进程映射到相同的内存映射文件

如果我使用MemoryMappedFile.CreateFromFile从两个不同的应用程序中创建两个内存映射文件,并为其分配相同的名称,会发生什么情况?这会引发异常吗?

解决方法

经过测试后,我发现抛出了异常:

Unhandled exception. System.IO.IOException: Cannot create a file when that file already exists.
   at System.IO.MemoryMappedFiles.MemoryMappedFile.CreateCore(FileStream fileStream,String mapName,HandleInheritability inheritability,MemoryMappedFileAccess access,MemoryMappedFileOptions options,Int64 capacity)
   at System.IO.MemoryMappedFiles.MemoryMappedFile.CreateFromFile(String path,FileMode mode,Int64 capacity,MemoryMappedFileAccess access)
   at LiveFileReader.AsyncLiveFileReader..ctor(String filePath) in ...