代码优化:c#问题中的带宽监视器

时间:2012-02-19 14:25:39

标签: c# refactoring optimization bandwidth-throttling

我的问题主要是关于代码优化(目前) 我创建了一个监视PC上不同连接的网络监视器,我所做的是我在堆栈的第3级(网络级别)嗅探数据包,在捕获数据包后,我应该创建一个对于每个连接的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以获取下一位数据。 收到的总数据部分工作正常,但BP部分适用于少量数据,如果数据速率超过10kbps(在我的电脑上)它就会发疯 我应该尝试优化整个代码,还是有其他方法(请记住我需要监控每一个连接),还是我需要使用不同的UI控件? 我应该专注于优化还是使用新的方式?

提前致谢

1 个答案:

答案 0 :(得分:0)

标准控件不适用于此类负载。您需要将数据记录与数据显示分开。

我每秒只会显示最后一次说10kb的文本。您仍然可以将所有日志记录保留在某些数据结构中。但是你不必将它们全部推送到UI。

或者你可以编写自己的文本显示控件,但这将会有更多的工作。