Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/309.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 另一个进程正在使用文件流_C#_.net_File_Stream - Fatal编程技术网

C# 另一个进程正在使用文件流

C# 另一个进程正在使用文件流,c#,.net,file,stream,C#,.net,File,Stream,我得到这个错误: 进程无法访问文件“c:\file.xml”,因为另一个进程正在使用该文件 我把所有的都关了,处理掉了。有什么问题吗?更换: 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(); FileStrea

我得到这个错误:

进程无法访问文件“c:\file.xml”,因为另一个进程正在使用该文件

我把所有的都关了,处理掉了。有什么问题吗?

更换:

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
,而不使用
FileStream

StreamReader sr=new StreamReader(f1);

其他数据:

  • 调用
    StreamReader.Dispose
    时,
    StreamReader
    对象对提供的流对象调用
    Dispose

  • Dispose
    方法调用
    Close
    方法。阅读更多信息

意思:您可以删除您在
文件流上编写的
Dispose
Close

StreamReader sr=new StreamReader(f1);

但是您确实应该使用
using语句
来读取非托管资源。

您在同一个文件上有一个FileStream和一个StreamReader。 删除此行:

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();
改变

FileStream f1=new FileStream("c:\\file.xml",FileMode.Open);     

以下两行代码都是试图访问同一文件的独立对象:

StreamReader sr=new StreamReader(f1); 
因此,每个人都试图单独访问该文件,而将您的代码更改为my connection cases sr以通过f1访问该文件。问题可能出在:

FileStream f1=new FileStream("c:\\file.xml",FileMode.Open); 
StreamReader sr=new StreamReader("c:\\file.xml"); 

Filestream可能正在访问该文件,然后StreamReader尝试单独访问该文件。请尝试让您的StreamReader使用相同的已定义流。

我遇到了这个问题,请注意,您应该在“处理”之前“关闭”流@Mironline。这是自动完成的。阅读我所有的答案。。。你可以看到他在做什么
FileStream f1=new FileStream("c:\\file.xml",FileMode.Open);
StreamReader sr=new StreamReader("c:\\file.xml");