複数のマルチイメージTIFFファイルを1つのマルチイメージTIFFファイルに結合していて、ソースTIFFファイルの削除に問題があるそれらにハンドルを保持し続けます。Image.FromFileを使用するとファイルのハンドルが解放されない
私はImage.FromFileを通じてTIFF画像を読んでいる:私は他のすべてのTIFF画像を同じように読み、そして得られたTIFF画像にそれらを追加し
Bitmap resultTiff = (Bitmap) Image.FromFile(strImageFile);
た後。
私は参照を解放すると、ファイル結果として保存するには、このコードを使用し終わったら:
ep.Param[0] = new EncoderParameter(enc, (long) EncoderValue.Flush);
resultTiff.SaveAdd(ep);
resultTiff.Dispose();
を今の問題は、ファイル上のハンドルはまだが存在する(したがって、ファイルが削除できないことです)resultTiff.Dispose()
コールの後にGC.Collect()
と呼ぶ場合を除きます。
私はGCと呼ぶことで気分が良くないと思いますが、これを達成する他の方法はありますか?
+1です。 'Image.FromFile'は必ずしも正確に正しいことをするわけではありません。手動でファイルストリームを開いてそこからビットマップを読み込んで置き換えることで、より柔軟に対応できます。 – stakx
何らかの理由で 'FileStream'は私に同じ問題を与えていました。代わりに 'Image.FromStream(新しいMemoryStream(File.ReadAllBytes(path)))'を使いました。これはうまくいきました。 – William