hdt*_*hdt 5 c# file memory-mapped-files
以下代码抛出此异常:
"该进程无法访问文件'\ 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)
在删除文件之前,您必须处理映射:
reader.Dispose();
mmf.Dispose();
File.Delete(filename);
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
2926 次 |
最近记录: |