PictureBox 이미지 수정 시 파일 액세스 유지
데스크탑 애플리케이션에서 원본 이미지 파일이 이미 사용 중인 경우 새로운 Bitmap() 생성자를 사용하여 PictureBox의 이미지를 수정하면 파일 액세스 오류가 발생할 수 있습니다. 이 문제는 PictureBox가 초기 파일에 대한 참조를 유지하여 새 이미지가 로드될 때 파일에 대한 액세스를 방지할 때 발생합니다.
이 문제를 해결하기 위한 메모리 친화적인 방법은 File.ReadAllBytes()를 사용하여 이미지를 MemoryStream에 로드한 다음 Image.FromStream()을 사용하여 새 이미지를 만드는 것입니다. 이렇게 하면 원본 파일의 잠금이 해제되고 파일 액세스 위반 없이 PictureBox에 새 이미지를 표시할 수 있습니다.
다음은 수정된 코드 예시입니다.
<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>
이 방법은 파일 액세스 문제를 해결할 뿐만 아니라 성능도 향상시킵니다. 테스트 결과, 이 기술을 사용하여 이미지를 로드하는 데는 이미지당 약 0.26밀리초가 걸리는 반면, 비트맵에서 복사하는 데는 이미지당 약 0.50밀리초가 걸리는 것으로 나타났습니다. 바이트 배열의 더 작은 메모리 공간과 단일 이미지 생성 작업은 효율성에 기여합니다.
생성된 이미지가 비트맵 객체여야 하는 경우 (Bitmap)Image.FromStream(ms)을 사용하여 반환된 이미지를 변환할 수 있습니다. 리소스의 올바른 릴리스를 보장하기 위해 using
문을 사용하여 MemoryStream
을 관리합니다.
위 내용은 PictureBox 이미지를 업데이트할 때 파일 액세스 오류를 방지하려면 어떻게 해야 합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!