0

这是我写入几个文件的代码:

StreamWriter writer = new StreamWriter(@"C:\TotalStock\data\points\" + stockName.ToUpper() + ".txt");

for(int i = 0; i < lines; i++)
{
   writer.WriteLine(lineData[i]);
   postGui.Send((object state) =>
    {
       progressBar2.PerformStep();
    }, null);
}

writer.Close();

当我删除文本文件并运行代码时没有问题,但是当我关闭应用程序并再次运行它时,程序给了我以下错误。是什么导致了这个错误,我能做些什么来阻止它?

错误:

mscorlib.dll 中出现“System.IO.IOException”类型的未处理异常

附加信息:该进程无法访问文件“C:\TotalStock\data\points\IBM.txt”,因为它正被另一个进程使用

4

2 回答 2

0

问题可能是您打开文件但退出程序时没有关闭它。我看到您正在使用StreamWriter将数据写入文件。您可能会遇到异常,因此不会关闭文件。播放文件时,您应该始终这样做:

try
{
   // Your code with files
}
catch
{
}
finally
{
   writer.Close();
}

其他原因可能是您正在使用其他一些文件/流/等。请务必在关闭程序之前关闭所有需要关闭的成员。

如果您希望我们检查您是否忘记了其他内容,请分享您的所有代码

正如 Sayse 所说的另一种确保关闭作者的方法是 using 语句:

using(StreamWriter writer = new StreamWriter(@"C:\TotalStock\data\points\" + stockName.ToUpper() + ".txt");)
{
    // Your code of playing with files
}
于 2013-07-24T05:38:57.757 回答
0

正如 marc_s 指出的那样,发生错误是因为您尝试编辑的文件已被另一个应用程序打开。如果您确定没有在任何其他编辑器/查看器中打开该文件,则问题可能是程序本身。

如果同一代码的多个实例同时运行并需要访问同一文件,例如在多线程环境中。

当您尝试写入文件时,应用程序中的另一个组件是否从文本文件中读取?
您的应用程序是否挂起,并且第二个实例需要相同的文件?
你每次都运行相同的测试吗?

于 2013-07-24T05:51:09.767 回答