FileStream f=new FileStream("c:\\file.xml",FileMode.Create);
StreamWriter sf=new StreamWriter(f);
sf.WriteLine(stroka);
sf.Close();
sf.Dispose();
f.Close();
f.Dispose();
FileStream f1=new FileStream("c:\\file.xml",FileMode.Open);
StreamReader sr=new StreamReader("c:\\file.xml");
xmlreader=new XmlTextReader(sr);
sr.Close();
sr.Dispose();
f1.Close();
f1.Dispose();
我收到此错误:
我已经关闭了所有并处理了所有。有什么问题?
最佳答案
代替:
StreamReader sr=new StreamReader("c:\\file.xml");
和:
StreamReader sr=new StreamReader(f1);
您正在创建没有
StreamReader
的新 FileStream
附加数据:
StreamReader
对象在调用 Dispose
时调用提供的 Stream 对象上的 StreamReader.Dispose
。 Dispose
方法调用 Close
方法。阅读 this 了解更多信息。 意思是:你可以把你写在
Dispose
上的Close
和FileStream
去掉FileStream f = new FileStream("c:\\file.xml", FileMode.Create);
StreamWriter sf = new StreamWriter(f);
sf.WriteLine(stroka);
sf.Dispose();
FileStream f1 = new FileStream("c:\\file.xml", FileMode.Open);
StreamReader sr = new StreamReader(f1);
xmlreader = new XmlTextReader(sr);
sr.Dispose();
但是您 确实 应该将
using statement
用于非托管资源,请阅读 this 。关于c# - 另一个进程正在使用文件流,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/9824771/