사진을 찍어 저장 버튼을 눌러 이미지를 컴퓨터에 저장하는 응용 프로그램이 있습니다. 이것은 대부분의 시간을 잘 작동합니다. 하지만 일부 사용자가 부패한 이미지를보고 있습니다. 이 이미지는 크기가 올바른 바이트 수에 대한 것이지만 이미지의 바이트 수를 시도하면 null 값이로드됩니다. 사진을 저장하는FileStream을 사용하여 이미지를 저장하면 파일이 손상 될 수 있습니다.
내 코드는 다음과 같습니다 FileStream Constructor (SafeFileHandle, FileAccess)에서
try
{
using (FileStream stream = new FileStream(localCopyFileLocation, FileMode.Create))
{
JpegBitmapEncoder encoder = new JpegBitmapEncoder();
encoder.QualityLevel = quality;
encoder.Frames.Add(BitmapFrame.Create(photo, null, metadata, null));
encoder.Save(stream);
}
}
catch (Exception ex)
{
//Write to log etc.
}
내가이 글을 읽을 닫기가 호출 될 때
가, 핸들도 닫히고 파일의 핸들 카운트가 감소합니다.
FileStream은 핸들 위에 단독 제어 이 있다고 가정합니다. FileStream이 인 동안 읽기, 쓰기 또는 검색을 수행하면 핸들이 손상되어 데이터가 손상 될 수 있습니다. 안전을 위해 핸들을 사용하기 전에 Flush를 호출하고 핸들 사용을 완료 한 후에는 Close가 아닌 메서드를 호출하지 마십시오.
그러나 이것이 무슨 뜻인지 확실하지 않습니다. 내 사용자가 파일을 쓰는 동안 태블릿을 잠자기 상태로 둘 수 있습니까? 이것이 일어나는 다른 이유는 무엇일까요?
'save()'를 호출 한 후에'stream.Flush();'를 호출해야하는 것 같습니다. – kindasimple
왜 'steam.Flush()'를 호출해야합니까? 그 부름은 무엇을 하는가? – user1
올바른 생성자 문서가 있습니까? 이 [FileStream 생성자] (https://msdn.microsoft.com/en-us/library/47ek66wy(v=vs.110).aspx) –