お世話になります
C#を使った自作WinGUIアプリの開発をしています
1MB程度のテキストファイル(10万行程度)を読み込み、それをまとめてTextBox(またはRitchTextBox)に入れてやると、表示までにものすごい時間(数十秒~数分、またはフリーズ)がかかり、しかも、テキストの編集やスクロール等が実質不可能です
何が原因でしょうか
環境:
VisualStudioCommunity2015
C#
Win10 PRO
Core i7、8GB
処理としては、
1ファイルオープン
2一行ずつ配列に読み込み(後の別の処理のために配列が必要)
3ループを回して、StringBuilderで一つの文字列に結合
4StringBuilderの.ToString()でtextbox.textに代入
となっています。
3までは、一瞬で完了することが確かめられており、
代入してからが非常に時間がかかっています
ためしに、もう少し容量の小さいファイル(50kB程度)でやってみるとほぼ一瞬でテキストボックス内に文字たちが表示されました
また、テキストボックスに何も表示されていな状態で、クリップボードから1MB程度のテキストを貼り付けると先と同様の現象が起きました
ということで、
(C#の?)テキストボックスやリッチテキストボックスは数百万文字の表示(格納?)ができないのでは?と思ったのですが、いかがでしょうか
また、普通のTextBox(複数行)のほうが、RitchTextBoxより若干早かったですが、それでも相当遅いです。
調べてみましたが、TextBoxに「入力」できる最大文字数だとか(MaxLength)、
ループの中でtextbox.text+=string;みたいなコードはだめだよ、といったものしか見つけられず、単に「大量の文字列をテキストボックスに貼り付けると遅い」という問題の直接の解決策を見つけることができませんでした
よろしくお願いいたします

回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2017/04/13 00:50
2017/04/13 01:22
2020/01/24 05:11