> 백엔드 개발 > 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을 사용하여 이미지 개체를 로드하여 파일 잠금을 방지합니다. 그러면 이 로드된 이미지를 PictureBox(예: pbAvatar.Image = LoadImageFromStream(filePath);)에 할당할 수 있습니다.

성능 고려 사항

비트맵 객체가 꼭 필요한 경우 로드된 이미지를 효율적으로 변환할 수 있습니다.

<code class="language-csharp">return (Bitmap)Image.FromStream(ms);</code>
로그인 후 복사

벤치마킹에 따르면 바이트 배열에서 직접 로드하는 것이 기존 비트맵에서 비트맵을 생성하는 것(이미지당 약 0.50ms)보다 상당히 빠릅니다(이미지당 약 0.26ms). 이러한 성능 향상은 불필요한 이미지 사본을 피하는 데서 비롯됩니다.

위 내용은 C#에서 비트맵 초기화로 잠긴 파일을 잠금 해제하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿