首頁 > 後端開發 > C++ > 如何在 C# 中解鎖位圖初始化鎖定的檔案?

如何在 C# 中解鎖位圖初始化鎖定的檔案?

DDD
發布: 2025-01-13 22:57:42
原創
786 人瀏覽過

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

解決位圖載入期間的 C# 檔案鎖定問題

當 Bitmap 物件在初始化後鎖定影像檔案時(例如 pbAvatar.Image = new Bitmap(filePath)),通常會出現錯誤訊息「該進程無法存取該文件,因為該檔案正在被另一個進程使用」。這可以防止後續嘗試存取或修改該文件。

解決方案在於釋放這個鎖。 一種高效的方法涉及直接從流加載圖像,繞過位圖構造函數的文件鎖定機制:

<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>
登入後複製

函數將圖像檔案讀取到位元組數組中,然後使用 MemoryStream 載入 Image 對象,避免檔案鎖定。 然後可以將此載入的圖片指派給您的 PictureBox(例如 pbAvatar.Image = LoadImageFromStream(filePath);)。

效能注意事項

如果 Bitmap 物件是絕對必要的,您可以有效地轉換載入的映像:

<code class="language-csharp">return (Bitmap)Image.FromStream(ms);</code>
登入後複製

基準測試表明,直接從位元組數組加載(每個圖像大約 0.26 毫秒)比從現有位圖創建點陣圖(每個圖像大約 0.50 毫秒)要快得多。 這種效能提升源自於避免不必要的影像複製。

以上是如何在 C# 中解鎖位圖初始化鎖定的檔案?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板