小编hdt*_*hdt的帖子

无法删除MemoryMappedFile的文件

以下代码抛出此异常:

"该进程无法访问文件'\ filename',因为它正由另一个进程使用."

很公平,但关闭阅读器和/或mmf的正确方法是什么,以便删除文件?我认为MemoryMappedFile会有一个close()方法或类似的东西,但事实并非如此.

任何帮助将不胜感激.谢谢.

mmf = MemoryMappedFile.CreateFromFile(filename,
      System.IO.FileMode.OpenOrCreate,
      "myMap" + fileNo.ToString(),
      fileSize);

reader = mmf.CreateViewAccessor(0, accessorSize);

<do stuff>

File.Delete(filename);
Run Code Online (Sandbox Code Playgroud)

EDITS:

看起来它只是在析构函数中我遇到了这个问题.当在其他地方调用dispose()时它工作正常,但是当我执行以下操作时它会抛出异常.Reader和mmf显然是班上的成员.输入构造函数后,文件访问是否隐式发生了什么?

~Class()
{
    try
    {
        if (File.Exists(filename))
        {
            reader.Dispose();
            mmf.Dispose();
            File.Delete(filename);
        }
    }
    catch (Exception e)
    {
    }
}
Run Code Online (Sandbox Code Playgroud)

c# file memory-mapped-files

5
推荐指数
1
解决办法
2926
查看次数

标签 统计

c# ×1

file ×1

memory-mapped-files ×1