2009-05-01 9 views
2

Ich verwende diesen C# -Code, um auf eine Bilddatei zuzugreifen, um Metadaten daraus zu lesen..NET BitmapSource ist Datei sperren

BitmapSource img = BitmapFrame.Create(uri); 

die Bilddatei von uri angegeben wird leider bis das Programm endet gesperrt. Wie verhindere ich, dass das Bild gesperrt wird?

Antwort

8

vielleicht this could help?

bearbeiten

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

BitmapCreateOptions.None = Standardoption

BitmapCacheOption.OnLoad = zur Ladezeit speichert das gesamte Bild in den Speicher. Alle Anforderungen für Bilddaten werden aus dem Speicher gefüllt.

von here

3

Wenn Sie die Datei unmittelbar danach löschen/ändern möchten, lesen Sie die gesamte Datei in den Speicher und geben Sie sie stattdessen MemoryStream ein. Zum Beispiel:

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

Sie können auch generischen Strom verwenden:

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

mit (var stream = File.OpenRead()) ist eine bessere Praxis. Wer weiß, vielleicht wird eine neue Bitmap() eine Ausnahme auslösen. –