【发布时间】:2012-02-12 17:27:48
【问题描述】:
我有一个使用这种方法的 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();
}
}
这个想法是我可以用它提交日志条目,它会将条目写入富文本框和日志文件。
事情是这样的……streamwriter 只在第一次调用该方法时才写入!富文本框更新很棒。 Flush() 和 Dispose() 是我后来出于绝望尝试的东西,但我想 using 块应该可以处理。
有什么想法吗?谢谢!
【问题讨论】:
-
您确定没有在其他地方抛出和捕获异常吗?
-
可能有更好的方法,这就是为什么我在 cmets 中发布这个而不是回答,但我会尝试将 log.txt 作为文件流打开,然后将其复制到作者之前我开始写作了。
-
writer.Flush()和writer.Dispose()行肯定是多余的。否则,我无法复制您的问题。您要写入哪个文件夹?也许尝试写信给“我的文档”? -
我的第一个猜测是,WriteLine() 抛出了 IOException,并且正在代码的其他地方处理。将 StreamWriter 代码包装在 try 块中,并在 catch(IOException) 块中设置断点。哦,讽刺的是,如果您的日志记录方法没有记录它本身抛出的异常。
-
对不起,我应该提到它最初是在一个 try-catch 块中并且它没有抛出错误......我把它减少到这个(减去 flush()并 dispose()) 尝试缩小范围。
标签: c# streamwriter