C#多行文本框内存使用问题

时间:2011-03-16 19:48:17

标签: c#

我在C#中使用多行文本框来记录一些跟踪信息。我只需使用AppendText("text-goes-here\r\n"),因为我需要添加行。

我让这个程序运行了几天(有很多活动跟踪),我注意到它使用了大量内存。长话短说,看起来即使maxlength值达到非常小的值(256),文本框的内容也会不断扩大。

我认为它就像一个FIFO(抛弃超过最大长度的最旧文本)。它没有,它只是不断增加的规模。这显然是我记忆浪费的原因。谁知道我做错了什么?


在初步提问后几个小时... 好的,我尝试了下面的建议代码。为了快速测试它,我只是在我的应用程序中添加了一个计时器,并从该计时器滴答我现在调用的方法与下面的代码基本相同。滴答率很高,以便我可以观察过程的内存使用情况并快速确定是否存在泄漏。没有。那很好;但是,我把它放在我的应用程序中并且内存使用没有改变(仍然在泄漏)。这肯定意味着我在其他方面有泄漏:-(但是,如果我只是在该方法的顶部添加一个返回,使用率会回落到稳定。对此有什么想法?定时器 - 勾选调用的代码确实不是累积内存,而是我的真实代码(相同的方法)。不同之处在于我在实际代码中从各种不同的地方调用方法。调用的上下文能以某种方式影响这个吗?(注意,如果它不是已经很明显了,无论如何我都不是.NET专家... ...

2 个答案:

答案 0 :(得分:2)

TextBox将允许您附加文本而不管MaxLength值 - 它仅用于控制用户输入。您可以创建一个方法,在验证未达到maxlength后添加新文本,如果是,则只需从头开始删除x行。

答案 1 :(得分:2)

您可以使用简单的函数附加文字:

int maxLength = 256;
private void AppendText(string text)
{
     textBox1.AppendText(text);
     if(textBox1.Text.Length > maxLength)
       textBox1.Text = textBox1.Text.Substring(textBox1.Text.Length - maxLength);
}