0

豊富な 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 相当の文字数であると書かれていますが、テキストを読み込めるので、途中で意味がありますが、後でプログラムがダンプする際に問題があると思います。

何か案は?制限のないカスタム コントロールを見つけようとしていますが、これまでのところ成功していません。

4

1 に答える 1