调用IsolatedStorageFile.OpenFile时第一次机会FileNotFoundException

时间:2012-11-30 09:34:03

标签: silverlight isolatedstorage

在我的代码的某处,我有这一行:

return _store.OpenFile(path, fileMode);

fileMode有时为FileMode.Create,有时为FileMode.Open。 一切正常,我总是得到一个有效的流,如果有必要,文件是正确创建的。

但是,我刚刚在我的VS输出中发现每次调用上面一行的方法时我都会收到以下消息:

  

类型'System.IO.FileNotFoundException'的第一次机会异常   发生在mscorlib.dll

创建文件时出现此错误,当文件被覆盖时(显然存在),我也会收到此错误。

我对这些错误感到好奇,因为一切都很完美。

谢谢,

编辑:new IsolatedStorageFileStream(...)相同。一切正常,但我仍然得到“第一次机会异常”的消息。

2 个答案:

答案 0 :(得分:0)

var isf = IsolatedStorageFile.GetUserStoreForApplication();
IsolatedStorageFileStream isfs;

if (!isf.FileExists(_filename))
    isfs = new IsolatedStorageFileStream(_filename, System.IO.FileMode.Create, isf);
else
    isfs = new IsolatedStorageFileStream(_filename, System.IO.FileMode.Open, isf);


var writer = XmlWriter.Create(isfs);
xml.Save(writer);

writer.Close();
isfs.Close();
isfs.Dispose();
isf.Dispose();

答案 1 :(得分:0)

找到答案。

它是VS调试器如何工作的:对于{{catch}}块捕获的每个异常,"第一次机会异常"消息出现在VS输出中。 所以在这里,我们可以猜测,在内部,{{OpenFile}}方法使用try / catch块来检查文件是否存在。