System.IO.IOException의 한 종류로 xaml쪽에 바인딩된 이미지에 접근하려고 하면 나오는 Exception입니다.
'------' 파일은 다른 프로세스에서 사용 중이므로 프로세스에서 액세스할 수 없습니다
위 문구가 뜨면서 오류가 납니다.
저는 이미지 파일 정보를 저장하려다 해당 오류가 발생하였습니다 ㅠㅜ 해결 방법은 새로운 비트맵 이미지를 만들어주는 것입니다
var bitmapImage = new BitmapImage();
bitmapImage.BeginInit();
bitmapImage.StreamSource = new FileStream(info.ImagePath, FileMode.Open, FileAccess.ReadWrite);
bitmapImage.CacheOption = BitmapCacheOption.None;
bitmapImage.EndInit();
BitmapCacheOption을 None으로 주셔야 매번 이미지 파일을 직접 채우실 수 있습니다.
캐시 메모리라고 하면 실제 메모리와 CPU 사이에서 빠르게 전달을 위해서 미리 데이터들을 저장해두는 좀더 빠른 메모리인데 '임시 저장소'로 보시면 편할 것 같습니다.
BitmapCacheOption은 캐시 메모리를 언제 저장할지 선택하는 옵션으로 만약 None 외에 저장하는 옵션을 적용하시면 여전히 이미지가 사용중이라는 오류가 뜰수 있습니다.
using (StreamReader file = File.OpenText(filePath))
using (JsonTextReader reader = new JsonTextReader(file))
추가적으로, 파일 작업을 할때는 최대한 Using 내에서 코드를 작성하는 것이 좋습니다.
저같은 경우엔 Json 작업 중이라 JsonTextReader도 사용했습니다.
Using을 사용하는 이유는 Using을 벗어나면 자동으로 사용한 파일들이 Dispose 되기 때문에 따로 Dispose 처리를 해줄 필요가 없습니다.

아직 모르는 부분이 많아 위 내용에 잘못된 점이 있다면 댓글로 피드백 달아주세요!
참고해서 적극적으로 수정하겠습니다. 감사합니다.
'C# > WPF' 카테고리의 다른 글
Datagrid 내에 ItemsSource 외부의 값을 바인딩해야할 때 (0) | 2022.05.02 |
---|---|
StaticResourceHolder 값 제공 예외 throw (0) | 2022.02.14 |
Array Binding 시 Property Changed 이벤트 (0) | 2022.02.08 |