2

wxTextCtrl があり、非常に大きな文字列を入れる必要があります。(15 MB の文字列のように) 唯一の問題は、非常に遅いことです。これが私がやっていることです:

char * buff = ...
wxString data(buff, wxConvUTF8);
text->ChangeValue(data);

ただし、これはボトルネックではありません。これは、このコード ブロックが含まれている関数が返されるとすぐに発生します。アプリ全体が約 30 秒間フリーズします。ChangeValue の直後に wxYield を試してみました。これにより、文字列の最初の数行がコントロールに表示されますが、その後もフリーズします。どうすればこれを回避できますか?

ChangeValue はほぼ瞬時に返されることを強調しなければなりません。この後、おそらく wxTextCtrl の内部メッセージ ハンドラか何かで遅延が発生します。

4

1 に答える 1

2

wxTextCtrlOS の標準テキスト コントロールのみをラップするため、これによる制限も明らかになりwxTextCtrlます。あなたができることは、wxStyledTextCtrlマルチメガバイトのテキストをロードでき、それを行うのに時間がかからない代わりに を使用することです. ログの一部をスタイリングしてハイライト表示することもできますが (たとえば、エラー メッセージの読み取り)、読み込み時間が再び増加する可能性があります。

于 2010-01-24T10:10:06.873 に答える