日期:2014-05-18  浏览次数:20982 次

保存xml已占用的问题!急
我有一大批数据要处理,在这一大批数据当中,查找到一些数据后写入xml,相当于前面有好多方法检查,一旦查到,就调用写xml的这个方法如下,保存;
xml正常
XmlDocument newdoc = new XmlDocument();
newdoc.load("a.xml");
...中间添加节点
newdoc.save("a.xml");
因为是对硬盘上的文件进行的检查,所以是一个循环.我在本地的PC上跑这个数据,刚开始没问题,但有时跑着跑着,就会报a.xml已占用, 未处理的“System.IO.IOException”类型的异常出现在 mscorlib.dll 中,,这样的错.但我就开了一个界面winform写的,在跑这个程序.
这是怎么回事呀?但有时我要把它放到服务器上,处理能力好的服务器时,有时就不报,这是怎么回事?内存没释放?但我的确是每次都执行save啦呀,save不会释放这个load来的xml吗?如何解决这个问题?

------解决方案--------------------
应该及时把文件关闭。
用using试试
using( XmlDocument newdoc = new XmlDocument(); )
{
}
------解决方案--------------------
如楼上的用using 试试
------解决方案--------------------
多贴一点代码出来看看,可能是你写入xml的时候有问题
------解决方案--------------------
两种方式:
1.使用lock和using,锁定并及时释放
2. 
C# code
using (FileStream reader = File.Open(xmlPath,FileMode.Open,FileAccess.Read,FileShare.ReadWrite))
            {
                
                                          
            }

------解决方案--------------------
XmlDocument没有实现IDisposable是不能用using的。
加lock看看,或者用11楼讲的2的方法试试。
关注中。。。