富文本框-文本分配导致内存不足异常

本文关键字:文本 内存不足 异常 分配 | 更新日期: 2023-09-27 18:00:14

我有一个程序,它读取SQL Server中的NTEXT列,并在富文本框中显示输出。对于其中一个值,它抛出一个OutofMemoryException

我使用SqlDataAdapter读取该列,然后将该列的内容附加到stringBuilder。我得到了以下代码行的异常。

rtbEventDesc.Text = stringBuilder.ToString();

显示的信息是:

内存不足,无法继续执行程序。

我该如何解决这个问题?这个特定行的列大小是9MB,并没有那么大。

富文本框-文本分配导致内存不足异常

我的建议是将coumn转储到一个临时文件中,然后使用以下方法读取该文件:

rtbEventDesc.LoadFile(tmpFileName);

希望能有所帮助。


编辑

在无法使用文件保存文件的情况下,也许可以使用内存流:

Byte[] text = GetByteArrayFromSqlAdapter();
using (MemoryStream ms = new MemoryStream())
{
   ms.Write(text, 0, text.Length);
   rtbEventDesc.LoadFile(ms, RichTextBoxStreamType.RichText);
}

编辑II

RichTextboxControl似乎在加载9Mb文件时不够好,它的性能也没有更好,主应用程序被卡住,并在窗口标题中显示一条(未响应)消息。

这里有两个选项:

  1. 如果加载时间在合理的时间内结束,请使用BackgroundWorker或任何其他异步机制来加载文件,并在加载时向用户提供反馈。

  2. 使用其他性能更好的文本框。我建议您使用Scintilla.NET或AvalonEdit