0

我正在使用以下代码从 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;
    }
}

我不时收到以下异常:

在此处输入图像描述

详细信息有以下文字:

数组的偏移量和长度超出范围或计数大于从索引到源集合末尾的元素数

有任何想法吗?我不知道这是否重要,但这段代码是在繁重的多线程环境中访问的(我的意思是有很多线程调用这些行)。

我知道这是第一次机会例外,但无论如何我不明白原因。

4

2 回答 2

1

我用非常相似的代码遇到了同样的错误。以我的经验,它只发生在损坏的照片文件上。照片都是由 CameraCaptureTask 生成的,我从来没有能够重现错误,但它发生在野外。

错误消息有点误导。

我在文件流上明确调用 Close+Dispose 但这相当于“使用”声明,ignacio 在上面的回复中是正确的。

于 2015-04-21T08:57:27.017 回答
0

删除流对象的第二个 using 语句,这将解决问题。

于 2014-12-28T00:20:39.923 回答