富文本框 - 文本分配导致OutofMemoryException

时间:2013-02-20 15:44:33

标签: c# .net richtextbox

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

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

rtbEventDesc.Text = stringBuilder.ToString();

显示的信息是:

  

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

如何解决此问题?此特定行的列大小为9 MB,这并不是那么多。

1 个答案:

答案 0 :(得分:0)

我的建议是将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文件,它的性能不佳,主应用程序卡住并在Window标题中显示(Not Responding)消息。

这里有两个选项:

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

  2. 使用效果更好的其他文本框。我建议您使用Scintilla.NETAvalonEdit