我在富文本框中存储大量文本时遇到问题。
我正在尝试读取一个相当大的文本文件(从 90mb 到 450mb 的任何地方),并将我读过的内容放在一个富文本框中。它在一个简单的程序中工作,但是当我在一个复杂的程序中工作时,我得到一个 OutOfMemory 异常。
需要注意的一点是,当我退出我的简单程序时,我在程序返回 0 之前得到了 OutOfMemory 异常。
这是我的简单程序的代码:
array<String^>^ strArray;
StreamReader^ sr;
String^ dummyStr;
int dummyInt;
sr = gcnew StreamReader("C:\\testsize.txt");
while( (dummyStr = sr->ReadLine() )!= nullptr)
{
dummyInt++;
}
sr->Close();
sr = gcnew StreamReader("C:\\testsize.txt");
strArray = gcnew array<String^>( dummyInt );
for(int i=0; i < strArray->Length; i++)
{
strArray[i] = sr->ReadLine();
}
richTextBox1->Lines = strArray;
我的项目中有类似的代码片段,当我执行richTextBox1->Lines = strArray 行时会弹出异常。
我已经阅读了富文本框的文档,它说最大限制是 64KB 的字符,但这在中途是有道理的,因为我可以加载文本,但我猜程序在之后转储它时有问题。
有任何想法吗?我一直在尝试寻找一些没有限制的自定义控件,但到目前为止还没有成功。