Dateisperrausnahme in der PictureBox-Bildzuweisung beheben
Beim Zuweisen eines Bildes zu einer PictureBox zur Laufzeit kann es sein, dass Entwickler auf eine Fehlermeldung stoßen, die besagt, dass die Datei durch einen anderen Prozess gesperrt ist. Dies geschieht, wenn die Datei bereits von einem Bild- oder Bitmap-Objekt verwendet wird. Um dieses Problem zu beheben, gibt es zwei Möglichkeiten, Dateien zu entsperren.
Memory Streams verwenden
Der empfohlene Ansatz besteht darin, Bilddaten in einen Speicherstream zu laden und aus dem Stream ein Image-Objekt zu erstellen. Diese Methode hebt die Dateisperre auf und ermöglicht die weitere Bildverarbeitung:
<code class="language-c#">public static Image FromFile(string path) { byte[] bytes = File.ReadAllBytes(path); using (MemoryStream ms = new MemoryStream(bytes)) { return Image.FromStream(ms); } }</code>
Aus Bitmap kopieren
Ein anderer Ansatz besteht darin, eine Kopie des Bitmap-Objekts zu erstellen, das das Bild darstellt, und es der PictureBox zuzuweisen. Diese Methode erfordert zusätzlichen Speicherverbrauch, behält aber die ursprüngliche Dateisperre bei:
<code class="language-c#">Image imgCopy = new Bitmap(filePath); pbAvatar.Image = imgCopy;</code>
Leistungstests zeigen, dass das Laden von Bildern aus Bytes viel schneller ist als das Kopieren aus Bitmap. Wenn Sie das Bitmap-Objekt jedoch speziell benötigen, können Sie die Kopiermethode verwenden.
Das obige ist der detaillierte Inhalt vonWie kann ich Dateisperrausnahmen beim Zuweisen von Bildern zu PictureBoxes beheben?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!