我有一个应用程序,我在其中拍照并按下保存按钮并将图像保存到计算机。这在大多数情况下都可以正常工作。但是我看到我的一些用户的图像损坏了。这些图像的大小大约是正确的字节数,但是当尝试使用图像的字节时,它只是加载空值。
我保存照片的代码是:
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 Constructor (SafeFileHandle, FileAccess)我读到这个:
当调用 Close 时,句柄也被关闭并且文件的句柄计数减少。
FileStream 假定它对句柄具有独占控制权。在 FileStream 还持有句柄时读取、写入或查找可能会导致数据损坏。为了数据安全,请在使用句柄之前调用 Flush,并避免在使用句柄后调用除 Close 之外的任何方法。
但我不确定这意味着什么?我的用户可以在写文件时让他们的平板电脑进入睡眠状态吗?发生这种情况的其他原因可能是什么?