我使用以下代码从IsolatedStorageFile读取一些缓存的图像:
using (IsolatedStorageFile storageFile = IsolatedStorageFile.GetUserStoreForApplication())
{
using (IsolatedStorageFileStream stream = storageFile.OpenFile(filename, FileMode.Open, FileAccess.Read))
{
BitmapImage result = new BitmapImage();
result.SetSource(stream);
return result;
}
}有时,我会得到以下异常:

详细内容如下:
偏移量和长度超出了数组的界限,否则计数大于从索引到源集合末尾的元素数。
有什么想法吗?我不知道这是否重要,但是这段代码是在一个沉重的多线程环境中访问的(我的意思是有很多线程调用这些行)。
我知道这是第一次机会例外,但不管怎样,我不明白原因。
发布于 2015-04-21 08:57:27
我遇到了同样的错误与非常相似的代码。根据我的经验,这种情况只发生在一个损坏的照片文件上。这些照片都是由CameraCaptureTask生成的,我从来没有复制过这个错误,但是它发生在野外。
错误信息有点误导。
我在filestream上显式地调用Close+Dispose,但这相当于“使用”声明,ignacio在上面的答复中是正确的。
发布于 2014-12-28 00:20:39
删除流对象的第二个using语句,这将修复这个问题。
https://stackoverflow.com/questions/17280076
复制相似问题