62867


お世話になります。

C#(.Net4.6.1)で、ファイルのダンプ表示をするコードを書いて勉強中なのですが、正しく  
動いてしてるようなのですが、結果の表示で何か処理が重い気がします。

12M(約4000万文字)のテキストファイルをダンプ表示させようとしたのですが、  
二時間たっても終わりませんでした。バイトへの解析は早く終わっているのですが、  
TextBoxに表示する際にとても時間がかかっているようです。

もっと高速にできる方法がありましたら、ご教授ください。

以下が、そのソースコードです。

[code]

    private void dump(string filename)
    {
        this.tsslFileName.Text = Path.GetFileName(filename);
    
        byte[] btBin = File.ReadAllBytes(filename);
    
        this.stValues = BitConverter.ToString(btBin);
    
       this.areaBinary.Text = "";　　　　//  これはテキストボックス
    
        string stBuf = stValues;
    
        int iAddress = 0;
        string stDisp = "";
    
        //  何行かごとにTextBoxに吐き出す。
        int block = 0;
    
        while(true)
        {
            if(stBuf.Length < 47)
            {
                stDisp += iAddress.ToString("X8") + " | " + (stBuf + "\r\n");
                break;
            }
            else
            {
                stDisp += iAddress.ToString("X8") + " | " + (stBuf.Substring(0,47) + "\r\n");
                stBuf = stBuf.Substring(48);
            }
            iAddress += 16;
    
            block++;
    
            if(block >= 40)
            {
                block = 0;
                this.areaBinary.AppendText(stDisp);
                stDisp = "";
                System.GC.Collect();
            }
    
            this.Text = "残り　" + stBuf.Length + "文字";
    
            Application.DoEvents();
        }
    
    
        MessageBox.Show("かんりょう");
    }
    
[/code]

よろしくお願いいたします。


CC BY-SA 4.0
2020-02-08T04:00:16.920
62864
2020-02-08T04:58:06.450
9374
question
c# file
C# テキストボックスへの表示が遅い解消法について


テキストボックスへすべてのダンプ結果を書くのではなく、ページの管理を自分で行ったらいいと思います。具体的には、1行ごとの文字列の配列を作り、最初の1ページ分を表示します。1行送り、1行戻し、1ページ送り、1ページ戻しなどのボタンをつけて、押されるたびに、1ページ分のテキストボックスを更新します。  
あとテキストエディタコントロールのようなものを使うのもいいかもしれません。  
<https://sgry.jp/pgarticles/cs_editor_component.html>


CC BY-SA 4.0
2020-02-08T04:51:50.280
62867
2020-02-08T04:58:06.450
2020-02-08T04:58:06.450
24490
24490
62864
answer