以下是我写的几个文件的代码:
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',因为它正由另一个进程使用
答案 0 :(得分:0)
可能问题是您打开文件但在退出程序时不要关闭它。我看到你正在使用StreamWriter
将数据写入文件。
你可能会得到一个例外,因此不会关闭该文件。在播放文件时,您应该始终这样做:
try
{
// Your code with files
}
catch
{
}
finally
{
writer.Close();
}
其他原因可能是您正在使用其他文件/流/等。请确保在关闭程序之前关闭所有需要关闭的成员。
如果您希望我们检查您是否忘记了其他内容,请分享您的所有代码
正如Sayse所说,确保关闭作家的另一种方法是使用声明:
using(StreamWriter writer = new StreamWriter(@"C:\TotalStock\data\points\" + stockName.ToUpper() + ".txt");)
{
// Your code of playing with files
}
答案 1 :(得分:0)
正如marc_s指出的那样,发生错误是因为您尝试编辑的文件是由另一个应用程序打开的。如果您确定没有在任何其他编辑器/查看器中打开该文件,则该问题可能是程序本身。
如果同一代码的多个实例同时运行并且需要访问同一个文件,例如在多线程环境中。
当您尝试写入文件时,应用程序中的其他组件是否从文本文件中读取? 您的应用程序是否挂起,第二个实例需要相同的文件? 你每次都运行相同的测试吗?