开发一个将使用内存映射文件进行一些应用程序间(或者是内部?)应用程序通信的应用程序,我想确保当我随机生成一个内存映射内存文件时,我不会意外生成或者得到一个已经存在的副本(当行星对齐时这种超罕见的情况可能会发生)。关于如何防止这种情况的任何想法?System.IO.MemoryMappedFiles 似乎没有 File.Exists() 方法...我想我可以尝试 OpenOrCreate() 并处理任何访问冲突等,但这会很快变得令人讨厌。
问问题
665 次
3 回答
2
Using File.Exists()
wouldn't be concurrency-safe anyway.
The best thing to do: base a Filename on a Guid.
于 2013-08-26T14:53:19.860 回答
1
来自:使用 .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...
}
于 2013-08-26T15:13:09.633 回答
0
首先,您可以通过为文件使用唯一名称来防止命名冲突,例如您的公司名称或应用程序名称,或两者兼而有之。没有其他应用程序会在文件名中包含这些内容。如果您担心同一应用程序的两个副本,那么您可以简单地以仅创建模式打开文件,而不是创建或打开。
于 2013-08-26T15:24:04.863 回答