Kekalkan akses fail apabila mengubah suai imej PictureBox
Dalam aplikasi desktop, mengubah suai imej PictureBox menggunakan pembina Bitmap() baharu boleh menyebabkan ralat akses fail jika fail imej asal sudah digunakan. Masalah ini berlaku apabila PictureBox menyimpan rujukan kepada fail awal, menghalang akses kepada fail apabila imej baharu dimuatkan.
Untuk menyelesaikan masalah ini, cara yang mesra memori ialah menggunakan File.ReadAllBytes() untuk memuatkan imej ke dalam MemoryStream dan kemudian menggunakan Image.FromStream() untuk mencipta imej baharu. Dengan cara ini, fail asal akan dibuka kunci sambil membenarkan anda memaparkan imej baharu dalam PictureBox tanpa pelanggaran akses fail.
Berikut ialah contoh kod yang diubah suai:
<code class="language-c#">public static Image FromFile(string path) { byte[] bytes = File.ReadAllBytes(path); using (MemoryStream ms = new MemoryStream(bytes)) { Image img = Image.FromStream(ms); return img; } } pbAvatar.Image = FromFile(filePath);</code>
Kaedah ini bukan sahaja menyelesaikan masalah akses fail, tetapi juga meningkatkan prestasi. Ujian telah menunjukkan bahawa memuatkan imej menggunakan teknik ini mengambil masa kira-kira 0.26 milisaat setiap imej, manakala menyalin daripada peta bit mengambil masa kira-kira 0.50 milisaat setiap imej. Jejak memori yang lebih kecil tatasusunan bait dan operasi penciptaan imej tunggal menyumbang kepada kecekapan.
Sila ambil perhatian bahawa jika imej yang dijana perlu menjadi objek Bitmap, anda boleh menggunakan (Bitmap)Image.FromStream(ms) untuk menukar Imej yang dikembalikan. Untuk memastikan pengeluaran sumber yang betul, kami menggunakan pernyataan using
untuk mengurus MemoryStream
.
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Mencegah Ralat Akses Fail Semasa Mengemas kini Imej PictureBox?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!