解决再送100分 XDocument.Save方法出现异常,求可能原因
public void MakeIDListFile(string fileName, string[] idList)
{
XDocument doc = new XDocument();
XDeclaration declaration = new XDeclaration("1.0", "shift_jis", "yes");
doc.Declaration = declaration;
XElement idListElement = new XElement("ID_LIST");
doc.Add(idListElement);
XElement idElemtent;
for (int i = 0; i < idList.Length; i++)
{
idElemtent = new XElement("ID");
idElemtent.Add(idList[i]);
idListElement.Add(idElemtent);
}
doc.Save(fileName); }
异常信息如下
System.IO.IOException: 要求された操作はユーザー マップ セクションで開いたファイルでは実行できません。
場所 System.IO.__Error.WinIOError(Int32 errorCode, String maybeFullPath)
場所 System.IO.FileStream.Init(String path, FileMode mode, FileAccess access, Int32 rights, Boolean useRights, FileShare share, Int32 bufferSize, FileOptions options, SECURITY_ATTRIBUTES secAttrs, String msgPath, Boolean bFromProxy)
場所 System.IO.FileStream..ctor(String path, FileMode mode, FileAccess access, FileShare share)
場所 System.Xml.XmlWriter.Create(String outputFileName, XmlWriterSettings settings)
場所 System.Xml.Linq.XDocument.Save(String fileName, SaveOptions options)
場所 System.Xml.Linq.XDocument.Save(String fileName)
場所 XXXXXXXXX.common.util.CommonService.MakeIDListFile(String fileName, String[] pnList)
这个异常的可能的汉语意思:请求的操作无法在使用用户映射区域打开的文件上执行
程序一直正常运行,某日连续发生几次这个异常,过了段时间又正常运行。
什么原因可能导致这个异常呢? 文件不存在,文件无法访问,路经错误等都不是报这个错。
------解决方案--------------------百度搜索了很多信息:综合了一下
1.文件夹没有相应的操作权限
2.文件不存在?
3.该文件被其它人打开没有关闭
依次的解决方法你懂的。
------解决方案--------------------个人认为应该是文件被同时占用,没有即时释放资源引起的
------解决方案--------------------会不会没有考虑到线程间的安全?一旦多线程操作就出现IO冲突呢?
------解决方案--------------------是不是XML文件写好之后,然后以非只读的方式打开,再次写入导致的文件占用?
------解决方案--------------------