Rumah > pembangunan bahagian belakang > C++ > Bagaimana untuk Membuka Kunci Fail yang Dikunci oleh Permulaan Bitmap dalam C#?

Bagaimana untuk Membuka Kunci Fail yang Dikunci oleh Permulaan Bitmap dalam C#?

DDD
Lepaskan: 2025-01-13 22:57:42
asal
786 orang telah melayarinya

How to Unlock a File Locked by Bitmap Initialization in C#?

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>
Salin selepas log masuk

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>
Salin selepas log masuk

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!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan