次のコードは、この例外をスローします。
「別のプロセスで使用されているため、プロセスはファイル '\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);
編集:
私がこの問題を抱えているのはデストラクタだけのようです。dispose() が他の場所で呼び出されると正常に動作しますが、次のようにすると例外がスローされます。Reader と mmf は明らかにクラスのメンバーです。コンストラクターに入ると、ファイルアクセスに暗黙的な何かが起こっていますか?
~Class()
{
try
{
if (File.Exists(filename))
{
reader.Dispose();
mmf.Dispose();
File.Delete(filename);
}
}
catch (Exception e)
{
}
}