Laden...

Bild löschen (in use...)

Erstellt von -acid- vor 19 Jahren Letzter Beitrag vor 15 Jahren 3.261 Views
-
-acid- Themenstarter:in
885 Beiträge seit 2004
vor 19 Jahren
Bild löschen (in use...)

HiHo,

mal wieder ne Frage:

Ich öffne hier nen Bild und übergebe es einer PictureBox.

Habe jetzt das Problem, wenn ich das Bild löschen will, dass es wohl in einem anderem Process genutzt wird und daher nicht gelöscht werden kann.

Wenn ich aber das Bild nicht instanziere und in die PictureBox lade, kann ich es aus meiner Anwendung heraus löschen.

So hab jetzt versucht "MyImage.Dispose();" und "picturebox1.Image.Dispose();" zu machen, ich kann es aber immer noch nicht löschen.

Ich nehme an es hängt noch irgendwo im Speicher aber wie kann ich das wieder freigeben damit ich das Bild löschen kann?

Bitmap MyImage = new Bitmap(Image.FromFile(MyPath);
Image.GetThumbnailImageAbort MyCallback = new Image.GetThumbnailImageAbort(ThumbnailCallback);
			pictureBox1.Image = MyImage.GetThumbnailImage(Convert.ToInt16(ThumbWidth), Convert.ToInt16(ThumbHeight), MyCallback, System.IntPtr.Zero);

49.485 Beiträge seit 2005
vor 19 Jahren

Hallo -acid-,

ist es vielleicht das, was fehlt:

pictureBox1.Image = null;

oder vielleicht

pictureBox1.Invalidate ();
pictureBox1.Update ();

HTH

herbivore

_
416 Beiträge seit 2005
vor 19 Jahren

Hi,

ich würd mal


Stream f = File.OpenRead("...");
...Image.GetFromStream(f);
...
f.Close();

probieren.

-
-acid- Themenstarter:in
885 Beiträge seit 2004
vor 19 Jahren

geht alles nicht. hab alles drin. vielleicht liegt es auch an der instanz?!
da habe ich nur "MyImage.Dispose();"

49.485 Beiträge seit 2005
vor 19 Jahren

Hallo -acid-,

bei


Bitmap bitm = new Bitmap (Image.FromFile(MyPath));
bitm.Dispose ();
File.Delete (MyPath);

schlug bei mir das Löschen fehl, wogegen es bei


Image img = Image.FromFile(MyPath);
img.Dispose ();
File.Delete (MyPath);

funktionierte. Im ersten Fall erzeugst du ja ein Image- und ein Bitmap-Objekt und das Image-Objekt bleibt dann wohl trotz bitm.Dispose (); noch bestehen. Wenn du das Bitmap-Objekt trotzdem brauchst, dann müsstest du


Image img = Image.FromFile(MyPath);
Bitmap bitm = new Bitmap (img);
bitm.Dispose ();
img.Dispose ();
File.Delete (MyPath);

verwenden.

HTH

herbivore

PS: Es reicht sogar:


Image img = Image.FromFile(MyPath);
Bitmap bitm = new Bitmap (img);
img.Dispose ();
File.Delete (MyPath);

-
-acid- Themenstarter:in
885 Beiträge seit 2004
vor 19 Jahren

hey danke herbivore - funzt 🙂

10 Beiträge seit 2007
vor 16 Jahren

Hier auch noch ein Danke von mir an herbivore, genau nach der "Dispose()" funktion hab ich auch gesucht!

M
72 Beiträge seit 2006
vor 15 Jahren

... Dank an herbivore!