0

私の質問は主にコードの最適化に関するものです (現時点では) PC 上のさまざまな接続を監視するネットワーク モニターを作成しました。パケットをキャプチャすると、接続ごとに UI にオブジェクトを作成することになっています。現在行っていることは、全体的な消費帯域幅と、プログラムが実行される毎秒に送信される合計データを調べることです。コードのその部分は次のとおりです。

    temp= packet_rtxt.TextLength;
        tempdr = temp / 1024;
        dr_txt.Text=tempdr.ToString();
        totaldata = totaldata + temp;
        totaldatadisp = totaldata;
        packet_rtxt.Text = "";
        //unit
        if (totaldata < 10485760)
        {
            if (totaldata < 10240)
                unit.Text = "bytes";
            else
            {
                totaldatadisp = totaldatadisp / 1024;
                unit.Text = "KBs";
            }
        }
        else
        {
            totaldata = totaldatadisp / 1048576;
            unit.Text = "MBs";
        }
        test.Text = totaldatadisp.ToString();
        tds.Enabled = true;
    }

これまでのところ、キャプチャしたパケットをリッチテキストボックスに書き出し、そのrtxtの長さを取得して合計データのカウンターに追加し、長さを取得してデータレートとして使用し、rtxtをクリアしていますデータの次のビットのために。受信したデータの合計部分は正常に動作していますが、BPs セクションは少量のデータに対して正常に動作し、(私の PC で) データ レートが 10kbps を超えている場合、コード全体を最適化しようとする必要があります。メソッド(すべての接続を監視する必要があることに注意してください)、または別のUIコントロールを使用する必要がありますか? 最適化または新しい方法の使用に集中する必要がありますか?

前もって感謝します

4

1 に答える 1

0

標準の制御装置は、このような負荷には対応していません。データのロギングをデータの表示から分離する必要があります。

1 秒に 1 回、最後の 10kb のテキストのみを表示します。すべてのログ レコードを何らかのデータ構造に保持することもできます。ただし、それらすべてを UI にプッシュする必要はありません。

別の方法として、独自のテキスト表示コントロールを作成することもできますが、それはより多くの作業になります。

于 2012-02-19T14:34:55.207 に答える