我有一个 for 循环(由计时器减慢速度),循环每秒将日期保存在文本文件中。但是如果我在进程结束之前关闭程序,文本文件仍然存在。
问题是当我上课时,我没有足够的时间来等待程序结束,同时我需要在某个时候暂停线程,所以我不能只使用较小的循环并且冒险不有足够的时间暂停和恢复。
有没有办法在每次循环后保存文件?所以每当我退出(基于表单的应用程序)时,我会有一些数据吗?
我有一个 for 循环(由计时器减慢速度),循环每秒将日期保存在文本文件中。但是如果我在进程结束之前关闭程序,文本文件仍然存在。
问题是当我上课时,我没有足够的时间来等待程序结束,同时我需要在某个时候暂停线程,所以我不能只使用较小的循环并且冒险不有足够的时间暂停和恢复。
有没有办法在每次循环后保存文件?所以每当我退出(基于表单的应用程序)时,我会有一些数据吗?
将StreamWriter.AutoFlush属性设置为true
。这将使 writer 在每次调用 StreamWriter.Write 后将其缓冲区刷新到底层文件流。
using(var writer = File.AppendText("fileName"))
{
writer.AutoFlush = true;
foreach(string line in lines)
writer.WriteLine(line);
}
也许你可以有另一个循环(也有一个时间更短的计时器),它总是保存数据。
尝试使用它作为保存到文本文件:
它将读取旧文本并将旧文本和新文本保存到其中...
StreamReader sr = new StreamReader(path);
StreamWriter sw = new StreamWriter(path);
string old = sr.ReadToEnd();
sr.Close();
sw.WriteLine(old);
sw.WriteLine(date);
sw.Close();
或者您可以将 StreamWriter 设为公开,并在 Form Closing 事件中将其保存在关闭时...
public StreamWriter sr = new StreamWriter("C:\\...")