0

我在 c# winforms 中有一个客户端应用程序,除其他任务外,它还通过 tcp 套接字从另一个应用程序接收实时日志。如果我只是将日志文本添加到富文本框中,应用程序很快就会陷入困境。显然,用户无法以输入的速度阅读文本,但我们必须能够停止和启动系统,以便我们可以回顾日志。有比richtextbox更好的选择吗?我想保留为文本着色的能力和回滚日志的能力。WPF中的某些东西会更好吗?

4

1 回答 1

1

您可以将所有行添加到一个看起来像这样的列表:

public class LogLine
{
    public string Message { get; set; }
    public Color Color { get; set; }
    public DateTime TimeStamp { get; set; }
}

 List<LogLine> _log = new List<LogLine>(5000);

并使用支持虚拟化的控件来显示 LogLines。您还可以使用例如 10 个标签/文本块创建自己的标签/文本块,您可以根据滚动位置从列表中手动分配值。如果您让列表无限增长,该解决方案将占用内存。如果您需要大量日志,您应该使用文件系统来保存数据并定期截断列表。

于 2012-08-16T15:05:24.817 回答