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上的CloseFileStream去掉
    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/

    10-17 00:21