프로그램(C# etc.)
new Bitmap 할 때, 이미지 파일 잠기는 현상 해결 feat.new Bitmap(coords[4]);
질문폭격
2023. 3. 2. 18:05
C#에서 PictureBox 컨트롤의 Image 속성을 설정하려고 할 때 잠긴 파일에 대한 오류가 발생하는 경우 파일이 여전히 잠겨 있기 때문일 수 있습니다. 프로그램의 다른 부분이나 시스템의 다른 프로그램에서 액세스하는 중입니다. 이 문제를 해결하려면 다음 몇 가지를 시도할 수 있습니다.
- 파일에 액세스하는 모든 개체를 적절하게 폐기하고 있는지 확인합니다. 예를 들어 FileStream 또는 StreamReader를 사용하여 파일을 읽는 경우 < code>Dispose 메서드를 사용하거나 using 문으로 래핑합니다.
- 이미지를 MemoryStream에 로드해 보세요. code> 개체를 PictureBox의 Image 속성으로 설정하기 전에. 이렇게 하면 이미지 데이터가 디스크가 아닌 메모리에 저장되기 때문에 파일 잠금 문제를 방지할 수 있습니다. 다음은 예입니다.
- 이 예제에서는 먼저 File.ReadAllBytes 메서드를 사용하여 파일에서 바이트 배열로 이미지 데이터를 읽습니다. 그런 다음 새 MemoryStream 개체를 만들고 바이트 배열을 해당 생성자에 전달합니다. 마지막으로 MemoryStream을 사용하여 새로운 Bitmap 개체를 만들고 PictureBox의 Image 속성으로 설정합니다.
- 파일을 PictureBox의 Image 속성으로 설정하기 전에 파일을 임시 위치에 복사해 보십시오. 이렇게 하면 원본 파일에 직접 액세스하지 않기 때문에 파일 잠금 문제를 방지할 수 있습니다. 다음은 예입니다.
- 이 예에서는 먼저 Path.GetTempFileName 메서드를 사용하여 임시 파일 경로를 만듭니다. 그런 다음 File.Copy 메서드를 사용하여 이미지 파일을 임시 위치에 복사합니다. 임시 파일 경로를 사용하여 PictureBox의 Image 속성을 설정한 다음 File.Delete 메서드를 사용하여 임시 파일을 삭제합니다.
다음은 PictureBox 컨트롤의 Image 속성을 설정할 때 파일 잠금 문제를 해결하는 방법에 대한 몇 가지 제안입니다. 씨#. 특정 상황에 가장 적합한 방법을 찾기 위해 다양한 접근 방식을 실험해야 할 수도 있습니다.
using (MemoryStream ms = new MemoryStream(File.ReadAllBytes(filePath)))
{
childForm.pictureBox1.Image = new Bitmap(ms);
}
string tempFilePath = Path.GetTempFileName();
File.Copy(filePath, tempFilePath, true);
childForm.pictureBox1.Image = new Bitmap(tempFilePath);
File.Delete(tempFilePath);