豊富な TextBox に膨大な量のテキストを格納する際に問題が発生しています。
かなり大きなテキスト ファイル (90 MB から 450 MB まで) を読み取ろうとしており、読み取ったものをリッチ テキスト ボックスに入れようとしています。単純なプログラムでは機能しますが、複雑なプログラムで実行すると OutOfMemory 例外が発生します。
注意すべきことの 1 つは、単純なプログラムを終了すると、プログラムが 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 行を実行すると例外がポップアップします。
リッチ テキスト ボックスのドキュメントを読みましたが、最大制限は 64 KB 相当の文字数であると書かれていますが、テキストを読み込めるので、途中で意味がありますが、後でプログラムがダンプする際に問題があると思います。
何か案は?制限のないカスタム コントロールを見つけようとしていますが、これまでのところ成功していません。