Bry*_*ner 5 c# memory-mapped-files
在C#4.0中,MemoryMappedFile有几个工厂方法:CreateFromFile,CreateNew,CreateOrOpen,或OpenExisting.我需要打开MemoryMappedFile它是否存在,如果不存在,则从文件中创建它.我打开内存映射的代码如下所示:
try
{
map = MemoryMappedFile.OpenExisting(
MapName,
MemoryMappedFileRights.ReadWrite
| MemoryMappedFileRights.Delete);
}
catch (FileNotFoundException)
{
try
{
stream = new FileStream(
FileName,
FileMode.OpenOrCreate,
FileAccess.ReadWrite,
FileShare.Read | FileShare.Delete);
map = MemoryMappedFile.CreateFromFile(
stream, MapName, length + 16,
MemoryMappedFileAccess.ReadWrite,
null,
HandleInheritability.None,
false);
}
catch
{
if (stream != null)
stream.Dispose();
stream = null;
}
}
Run Code Online (Sandbox Code Playgroud)
它几乎按照我想要的方式工作,但最终OpenExisting会经常抛出异常.MemoryMappedFile在尝试OpenExisting拨打电话之前,有没有办法检查实际存在?或者我每次都必须处理异常?
此外,有没有办法找出当前句柄是否是最后一个MemoryMappedFile打开,以确定当处理当前句柄时文件是否将被关闭?
| 归档时间: |
|
| 查看次数: |
3055 次 |
| 最近记录: |