繁体   English   中英

为什么我第二次写入同一个文件时抛出隔离存储异常?

[英]Why am I getting an IsolatedStorageException thrown the second time I am writing to the same file?

在单元测试中,我正在使用以下代码打开流并对其进行写入:

IsolatedStorageFile store = IsolatedStorageFile.GetUserStoreForApplication();
stream = m_store.OpenFile(filename, FileMode.Create);
...
stream.Flush();
stream.Close();
stream.Dispose();
store.Dispose()

第一次成功,但是第二次失败,并显示以下日志输出:其他信息:在IsolatedStorageFileStream上不允许进行该操作。

FileMode.Create枚举常量定义为:

因此看来这是正确的常数。

我已经在stackoverflow上找到了一些类似的问题,例如打开文件时是否抛出了IsolatedStorageFileStream异常?

但他们没有帮助。 正如在网上某个地方所建议的(现在找不到链接),我尝试首先删除该文件(如果存在),这与枚举注释相反,如下所示,但没有帮助:

if (store.FileExists(filename))
{
   store.DeleteFile(filename);
}

问题:我缺少什么?

谢谢!

首先,您应该真正使用using语句,而不是显式调用CloseDispose否则,如果有异常,您将不会关闭流。

其次,我怀疑问题是您还没有处置商店本身。 尝试这个:

using (var store = IsolatedStorageFile.GetUserStoreForApplication())
using (var stream = store.OpenFile(filename, FileMode.Create))
{
    ...
}

您将对Iso存储的引用放在本地变量存储中,但是稍后使用member(?)变量m_store创建流。
这只是这个问题的错字,还是您正在执行的实际代码?

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM