gpt4 book ai didi

c# - 使 .NET TextBox 工作 FIFO 风格

转载 作者:行者123 更新时间:2023-11-30 13:31:43 25 4
gpt4 key购买 nike

我有一个用 C# 编写的 win GUI 应用程序,其中有一个用于写入日志的 TextBox 组件。在某些时候它会加载太多并且整个应用程序开始动摇。我想建立一个有效的机制使其成为 FIFO,这意味着 - 使其成为固定大小并自动删除最旧的内容。

是否有任何 .net/c# 功能可以做到这一点?否则,执行此操作的正确方法是什么?

更新:我对其他类型的文本数据也有这个问题,而不仅仅是日志。因此,ListBox 不是适合我的解决方案。

最佳答案

虽然我确信有更好的解决方案——当我想到 FIFO 时——我想到了队列。因此,您可以做一些事情,比如制作一个字符串队列来添加您的日志项,并设置一个整数来表示最大日志项数。

private Queue<string> logQueue = new Queue<string>();
private const int logMax = 100;

然后你可以像这样设置一个日志记录方法。

public void Log(string logText)
{
// this should only ever run for 1 loop as you should never go over logMax
// but if you accidentally manually added to the logQueue - then this would
// re-adjust you back down to the desired number of log items.
while (logQueue.Count > logMax - 1)
logQueue.Dequeue();

logQueue.Enqueue(logText);
textBox.Text = string.Join(Environment.NewLine, logQueue.ToArray());
}

这应该能为您提供所需的功能。

这种方法的一个明显缺点是您将文本存储在内存中两次。一次在队列中,一次作为文本框中的串联字符串。如果这对您来说不是大问题 - 那么这可能会奏效。

关于c# - 使 .NET TextBox 工作 FIFO 风格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18988170/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com