Menyelesaikan Masalah Mengunci Fail C# Semasa Memuatkan Bitmap
Mesej ralat "Proses tidak boleh mengakses fail kerana ia sedang digunakan oleh proses lain" biasanya timbul apabila objek Bitmap memegang kunci pada fail imej selepas permulaan (cth., pbAvatar.Image = new Bitmap(filePath)
). Ini menghalang percubaan berikutnya untuk mengakses atau mengubah suai fail.
Penyelesaian terletak pada melepaskan kunci ini. Kaedah yang sangat berkesan melibatkan memuatkan imej terus dari strim, memintas mekanisme penguncian fail pembina Bitmap:
<code class="language-csharp">public static Image LoadImageFromStream(string path) { byte[] imageBytes = File.ReadAllBytes(path); using (MemoryStream ms = new MemoryStream(imageBytes)) { Image img = Image.FromStream(ms); return img; } }</code>
Fungsi ini membaca fail imej ke dalam tatasusunan bait, kemudian menggunakan MemoryStream untuk memuatkan objek Imej, mengelakkan kunci fail. Imej yang dimuatkan ini kemudiannya boleh diberikan kepada PictureBox anda (cth., pbAvatar.Image = LoadImageFromStream(filePath);
).
Pertimbangan Prestasi
Jika objek Bitmap sangat diperlukan, anda boleh menukar Imej yang dimuatkan dengan cekap:
<code class="language-csharp">return (Bitmap)Image.FromStream(ms);</code>
Penanda aras mendedahkan bahawa memuatkan terus daripada tatasusunan bait adalah jauh lebih pantas (kira-kira 0.26 ms setiap imej) daripada mencipta Peta Bit daripada Peta Bit sedia ada (kira-kira 0.50 ms setiap imej). Keuntungan prestasi ini berpunca daripada mengelakkan salinan imej yang tidak diperlukan.
Atas ialah kandungan terperinci Bagaimana untuk Membuka Kunci Fail yang Dikunci oleh Permulaan Bitmap dalam C#?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!