簡體   English   中英

C#多行文本框內存使用問題

[英]Problem with C# multiline textbox memory usage

我在C#中使用多行文本框來記錄一些跟蹤信息。 我只需使用AppendText("text-goes-here\\r\\n")因為我需要添加行。

我讓這個程序運行了幾天(有很多活動跟蹤),我注意到它使用了大量內存。 簡而言之,即使將maxlength值設置為非常小的(256),文本框的內容也會不斷擴展。

我認為它就像一個FIFO(扔掉超過最大長度的最古老的文本)。 它沒有,它只是不斷增加的規模。 這顯然是我記憶浪費的原因。 誰知道我做錯了什么?


在初始問題后幾個小時添加...好的,我嘗試了下面的建議代碼。 為了快速測試它,我只是在我的應用程序中添加了一個計時器,並從該計時器滴答我現在調用的方法與下面的代碼基本相同。 滴答率很高,以便我可以觀察過程的內存使用情況並快速確定是否存在泄漏。 沒有。 那很好; 但是,我把它放在我的應用程序中並且內存使用沒有改變(仍然在泄漏)。 這肯定意味着我在其他方面有泄漏:-(但是,如果我只是在該方法的頂部添加一個返回,使用率會回落到穩定。對此有什么想法?定時器 - 勾選調用的代碼確實不是累積內存,而是我的真實代碼(相同的方法)。不同之處在於我在實際代碼中從各種不同的地方調用方法。調用的上下文能以某種方式影響這個嗎?(注意,如果它不是已經很明顯了,我不是任何.NET專家......

無論MaxLength值如何,TextBox都允許您附加文本 - 它僅用於控制用戶輸入。 您可以創建一個方法,在驗證未達到maxlength后添加新文本,如果是,則只從頭開始刪除x行。

您可以使用一個簡單的函數來附加文本:

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);
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM