我有一个使用此方法的C#.NET 3.5 Windows窗体程序:
private void toLog(string sLog)
{
richTextBox1.Text += DateTime.Now.ToString("T") + ": " + sLog + "\n";
richTextBox1.Update();
richTextBox1.Refresh();
using (StreamWriter writer = new StreamWriter("log.txt", true))
{
writer.WriteLine(DateTime.Now.ToString("T") + ": " + sLog);
writer.Flush();
writer.Dispose();
}
}
我的想法是我可以用它提交日志条目,它会将条目写入richtextbox和日志文件。
这就是...编写器只在第一次调用方法时写入! richtextbox更新很棒。 Flush()和Dispose()是我在绝望中尝试过的东西,但我想使用块应该处理它。
有什么想法吗?谢谢!
答案 0 :(得分:4)
我认为问题可能出在StreamWriter("log.txt",
:您的应用内可以更改路径,因此您最好在此处使用完整路径。
例如:
string dir = Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location);
string log = Path.Combine(dir, "log.txt");
using (StreamWriter writer = new StreamWriter(log, true))
答案 1 :(得分:1)
我知道我迟到了,但这对我有类似的情况帮助我,也许它会帮助别人。
我遇到了同样的问题,即流写器只写了文件中的第一行而没有别的。我能够通过使用FileStream修复它:
using (FileStream fileStream = File.Open("log.txt", FileMode.Open))
{
using (StreamWriter streamWriter= new StreamWriter(fileStream))
{
writer.WriteLine(DateTime.Now.ToString("T") + ": " + sLog);
}
}
答案 2 :(得分:0)
您可以使用以下示例:
using (StreamWriter writer = File.AppendText("log.txt"))
{
writer.WriteLine(DateTime.Now.ToString("T") + ": " + sLog);
}
在使用区块的末尾不需要使用Flush和Dispose,因为这将是隐含的。