如何防止RichTextBox附加哪个可能导致OutOfMemory?

Kel*_*lly 5 c# richtextbox winforms

我的目标是使用RichtextBox控件逐行保存日志,但我担心当行到达某一点时,我的窗口形式将挂起或运行内存..

任何人都可以告诉我如何防止这种情况发生,我想到可能会限制300行FIFO,或500行然后清空并再次刷新.但是我不知道我怎么能实现这一点.

    void WriteLog(string txt)
    {

        richTextBox1.AppendText(txt + Environment.NewLine);
        richTextBox1.HideSelection = false;
        richTextBox1.SelectionStart = richTextBox1.Text.Length;
    }
Run Code Online (Sandbox Code Playgroud)

Ren*_*iuz 0

尝试使用此代码删除最后一行,然后附加文本,那么您将只有 300 行限制:

    private void RemoveLastLineAfter300()
    {
        if(richTextBox1.TextLength != 0)
        {
            int totalCharacters = richTextBox1.Text.Trim().Length;
            int totalLines = richTextBox1.Lines.Length;
            string lastLine = richTextBox1.Lines[totalLines - 1] + "\n";
            string copyOfLastLine = richTextBox1.Lines[totalLines - 1];
            if(totalLines > 300)
            {
                string newstring = richTextBox1.Text.Substring(0, totalCharacters - lastLine.Length);
                richTextBox1.Text = newstring;
            }
        }
    }
Run Code Online (Sandbox Code Playgroud)

如果你想在 500 行后清除文本(如果我理解正确的话),只需检查 TextChanged 事件

if(richTextBox1.Lines.Length > 500)
   richTextBox1.Text = string.Empty;
Run Code Online (Sandbox Code Playgroud)

我希望这可以帮助你。