4

私は開いた一時画像ファイルを持っています

Bitmap CapturedImg = (Bitmap)Image.FromFile("Item/Item.bmp");

一時的であるため、さらに使用するために別の画像に置き換えたいのですが、プログラムはまだその画像を使用しており、何もできません。

交換するために画像から手放すにはどうすればよいですか?

4

6 に答える 6

3

MSDNから

イメージが破棄されるまで、ファイルはロックされたままになります。

代わりにファイル ストリームからイメージを読み取る

using( FileStream stream = new FileStream( path, FileMode.Open, FileAccess.Read ) )
{
         image = Image.FromStream( stream );
}
于 2012-07-10T07:56:56.723 に答える
2

ファイルが非同期コードによって上書きされたため、同様の問題があり、使用できませんでした。ビットマップのコピーを作成し、元のビットマップを解放することで問題を解決しました。

                Bitmap tmpBmp = new Bitmap(fullfilename);
                Bitmap image= new Bitmap(tmpBmp);
                tmpBmp.Dispose();
于 2012-07-10T08:02:44.350 に答える
1

この構文を使用してみてください

using (Bitmap bmp = (Bitmap)Image.FromFile("Item/Item.bmp"))
{
    // Do here everything you need with the image
}
// Exiting the block, image will be disposed
// so you should be free to delete or replace it
于 2012-07-10T07:56:41.477 に答える
0
using (var stream = System.IO.File.OpenRead("Item\Item.bmp"))
{
    var image= (Bitmap)System.Drawing.Image.FromStream(stream)
}
于 2012-07-10T07:59:49.483 に答える