2009-05-01 6 views
2

このC#コードを使用して、画像ファイルにアクセスしてメタデータを読み取りました。プログラムが終了するまで.NET BitmapSourceがファイルをロックしています

BitmapSource img = BitmapFrame.Create(uri); 

残念ながらuriが指定した画像ファイルがロックされます。イメージがロックされないようにするにはどうすればよいですか?

答えて

8

this could help

編集

BitmapSource img = BitmapFrame.Create(uri,BitmapCreateOptions.None,BitmapCacheOption.OnLoad); 

BitmapCreateOptions.None =デフォルトオプション

BitmapCacheOption.OnLoad =負荷時にメモリに画像全体をキャッシュします。画像データのすべての要求は、メモリストアから満たされます。あなたはまた、一般的なストリームを使用することができますhere

3

すぐにファイルを削除/変更できるようにするには、ファイル全体をメモリに読み込んでから、代わりにMemoryStreamを付けます。たとえば、

MemoryStream data = new MemoryStream(File.ReadAllBytes(file)); 
BitmapSource bitmap = BitmapFrame.Create(data); 
0

から

:(VARストリーム= File.OpenRead())を使用して

Stream stream = File.OpenRead(filename); 
Bitmap template = new Bitmap(stream); // or (Bitmap) Bitmap.FromStream(stream) 
stream.Close(); 
+0

は、より良い習慣です。誰かが知っている、新しいBitmap()が例外をスローするかもしれない。 –

関連する問題