【问题标题】:Displaying log file in a multiline textbox在多行文本框中显示日志文件
【发布时间】:2012-09-18 20:27:09
【问题描述】:

我正在将数据写入日志文件,并且需要在我的 WinForms UI 中显示该数据。我最初的想法是使用这样的多行文本框:

private void UpdateUITextbox(string text)
{
    textBoxStatus.AppendText(text + Environment.NewLine);
}

我不会在我的日志文件中写入大量文本,但随着时间的推移,它会累积起来,我最终可能会超过多行文本框的默认最大长度。为了防止这种情况发生,我唯一能想到的就是挂接到 OnKeyPress 事件处理程序中,并在添加内容之前检查文本框的长度,并在必要时删除旧文本以腾出空间较新的文本。但这似乎肯定会对性能产生影响。有人请告诉我有更好的方法吗?

【问题讨论】:

  • 我会查看集合中的每一行并将某种类型的转发器绑定到它。然后,您可以删除集合中较旧的行,或者仅使用仅显示前 x 行的过滤器。想想即使显示 100,000 行对性能的影响。

标签: c# .net winforms logging textbox


【解决方案1】:

一个 Winforms 文本框有一个 maximum length of 2GB

在担心内存问题之前,您必须先担心可用性问题 - 如果日志太长,您的用户将无法有效地使用它。

【讨论】:

  • 2GB 肯定是很多日志数据,你提出了一个非常有效的观点:这么大的日志的有效性。感谢您的反馈。
【解决方案2】:

我们使用AvalonEdit 显示我们的日志。它可以很好地扩展到数十万行。

【讨论】:

    【解决方案3】:

    为什么不用列表框而不是多行文本框?
    对于日志,最好在日志中添加更多信息,同时节省时间等信息。
    并在加载时读取具有您认为最近的范围内的日期戳的每一行。 一次加载所有日志文件是不明智的。只加载新的。
    如果您需要查看较旧的日志,您仍然可以使用时间/日期戳解决方案进行管理。

    【讨论】:

    • 嗨,侯赛因。感谢您的建议!我很感激。
    猜你喜欢
    • 1970-01-01
    • 2011-06-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-10-02
    • 2012-01-28
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多