在我的代码的某处,我有这一行:
return _store.OpenFile(path, fileMode);
fileMode
有时为FileMode.Create
,有时为FileMode.Open
。
一切正常,我总是得到一个有效的流,如果有必要,文件是正确创建的。
但是,我刚刚在我的VS输出中发现每次调用上面一行的方法时我都会收到以下消息:
类型'System.IO.FileNotFoundException'的第一次机会异常 发生在mscorlib.dll
创建文件时出现此错误,当文件被覆盖时(显然存在),我也会收到此错误。
我对这些错误感到好奇,因为一切都很完美。
谢谢,
编辑:与new IsolatedStorageFileStream(...)
相同。一切正常,但我仍然得到“第一次机会异常”的消息。
答案 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块来检查文件是否存在。