Announcement

Collapse
No announcement yet.

Wie kann ich ein Image in WPF wieder freigeben?

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Wie kann ich ein Image in WPF wieder freigeben?

    Hallo!

    Ich weise einem Image zur Laufzeit ein Bild zu:

    Code:
    imgFoto.Source = New BitmapImage(New Uri("C:\test\test.jpg")))
    und will später diese Bild-Datei löschen:

    Code:
    imgFoto.Source = Nothing
    File.Delete("C:\test\test.jpg")
    Dann kommt die Fehlermeldung:

    "Der Prozess kann nicht auf die Datei "C:\test\test.jpg" zugreifen, da sie von einem anderen Prozess verwendet wird."

    Klar, das Bild wird ja noch von imgFoto verwendet. Aber trotz "imgFoto.Source = Nothing" bleibt die Fehlermeldung und eine Möglichkeit wie Dispose habe ich nicht gefunden.

    Kann mir jemand helfen (bitte berücksichtigen, dass ich Anfänger bin)?

    Danke!!

    Gruß

    Kai

  • #2
    Hallo,

    das Bild wird standardmäßig von WPF gesperrt. Abhilfe schafft das Bild zur Ladezeit ganz zu cachen (im Speicher vorhalten) denn dann wird es nicht gesperrt.

    [highlight=c#]
    Uri uri = new Uri(_fileName);

    BitmapImage bmp = new BitmapImage();
    bmp.BeginInit();
    bmp.CacheOption = BitmapCacheOption.OnLoad;
    bmp.UriSource = uri;
    bmp.EndInit();

    imgFoto.Source = bmp;
    [/highlight]
    D.h. aber auch dass das Bild für die Anwendung im Speicher noch existiert. Es kann also noch angezeigt werden auch wenn es auf der Festplatte gelöscht wurde.


    mfG Gü
    "Any fool can write code that a computer can understand. Good programmers write code that humans can understand". - Martin Fowler

    Comment


    • #3
      Hallo gü,

      Super, genau das habe ich gesucht!

      Klappt bestens!

      Vielen, vielen Dank!!

      Gruß

      Kai

      Comment

      Working...
      X