我有一个程序在SQL Server中读取NTEXT列并在富文本框中显示输出。对于其中一个值,它会抛出一个OutofMemoryException
。
我使用SqlDataAdapter
阅读了该列,然后将该列的内容追加到stringBuilder
。我使用以下代码行获得异常。
rtbEventDesc.Text = stringBuilder.ToString();
显示的信息是:
内存不足,无法继续执行程序。
如何解决此问题?此特定行的列大小为9 MB,这并不是那么多。
答案 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)消息。
这里有两个选项:
如果加载时间在合理的时间内结束,请使用BackgroundWorker或任何其他异步机制加载文件,在加载时向用户提供反馈。
使用效果更好的其他文本框。我建议您使用Scintilla.NET或AvalonEdit