内存映射文件 - >检查重复的文件名

时间:2013-08-26 14:46:42

标签: c# .net memory-mapped-files

使用内存映射文件进行某些内部(或内部?)应用程序通信的应用程序,我想确保当我随机生成一个内存映射的内存文件时,我不知道t意外地生成或获得已经存在的副本(当行星对齐时可能发生类似的超罕见情况)。有关如何预防的任何想法? System.IO.MemoryMappedFiles似乎没有File.Exists()方法...我想我可以尝试OpenOrCreate()并处理任何访问冲突等,但这会很快变得讨厌。

3 个答案:

答案 0 :(得分:2)

无论如何,使用File.Exists()都不会是并发安全的。

最好的办法:在Guid上建立一个文件名。

答案 1 :(得分:1)

From: Programming Memory-Mapped Files with the .NET Framework - CodeProject.com

static void Main(string[] args)
{
    string name = "NetMMFSingle";

    // Create named MMF
    try
    {
        var mmf = MemoryMappedFile.CreateNew(name, 1);
    } catch
    {
        Console.WriteLine("Instance already running...");
        return;
    }

    ConsoleKeyInfo key = Console.ReadKey();

    // Your real code follows...
}

答案 2 :(得分:0)

首先,您可以使用文件的唯一名称(例如公司名称或应用程序名称或两者)来防止命名冲突。没有其他应用程序会在文件名中包含那些应用程序。如果您担心同一个应用程序的两个副本,那么您只需在“仅创建”模式下打开该文件,而不是“创建”或“打开”。