C# 在多行文本框中显示日志文件
我正在将数据写入日志文件,需要在WinForms UI中显示该数据。我最初的想法是使用如下多行文本框:C# 在多行文本框中显示日志文件,c#,.net,winforms,logging,textbox,C#,.net,Winforms,Logging,Textbox,我正在将数据写入日志文件,需要在WinForms UI中显示该数据。我最初的想法是使用如下多行文本框: private void UpdateUITextbox(string text) { textBoxStatus.AppendText(text + Environment.NewLine); } 我不会在日志文件中写入大量文本,但随着时间的推移,这些文本会累积起来,最终可能会超过多行文本框的默认最大长度。我能想到的防止这种情况发生的唯一方法是挂接OnKeyPress事件处理程序,
private void UpdateUITextbox(string text)
{
textBoxStatus.AppendText(text + Environment.NewLine);
}
我不会在日志文件中写入大量文本,但随着时间的推移,这些文本会累积起来,最终可能会超过多行文本框的默认最大长度。我能想到的防止这种情况发生的唯一方法是挂接OnKeyPress事件处理程序,在添加内容之前检查文本框的长度,必要时删除旧文本,为新文本腾出空间。但这似乎肯定会对性能产生影响。有人告诉我有更好的方法吗?Winforms文本框有一个
在您担心内存问题之前,您必须先考虑可用性问题—如果日志太长,您的用户将无法有效地使用它。我们将使用日志显示日志。它可以很好地扩展到数十万行。为什么不使用列表框而不是多行文本框?
对于日志,最好在保存日志的同时向日志中添加更多信息,如时间。
在加载时,读取每一行的日期戳,其范围在您认为最近的范围内。 一次加载所有日志文件是不明智的。仅加载新的。
如果您需要查看较旧的日志,您仍然可以使用时间/日期戳解决方案来管理这些日志。我将查看集合中的每一行,并将某种类型的中继器绑定到其中。然后,您可以删除集合中较旧的行,或者只使用一个只显示前x行的筛选器。想一想哪怕显示10万行的性能冲击。嗨,侯赛因。谢谢你的建议!我很感激。2GB当然是大量的日志数据,你提出了一个非常有效的观点:这样大小的日志的有效性。谢谢你的反馈。