2012-02-19 44 views
0

我的問題主要是關於代碼優化(目前) 我創建了監控PC上的不同連接的網絡監視器,我做了什麼是我在嗅探包堆棧的第三層(網絡層)在捕獲數據包後,我應該在每個連接的用戶界面上創建一個對象,現在我在做的是查看每秒發送的總體消費帶寬和總數據程序運行。這裏是那部分代碼:代碼優化:在C#中的帶寬顯示器發出

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部件工作正常的低量的數據,然後它瘋了,如果數據速率超過10kbps的(在我的電腦) 我應該嘗試優化整個代碼,或者是有一些其他方法(請記住我需要監視每一個連接),還是我需要使用不同的UI控件? 我應該專注於優化還是使用新方法?

在此先感謝

+0

您使用多線程?它是WPF應用程序還是WinForms? – sll 2012-02-19 14:31:40

回答

0

標準控制不是爲這樣的負載。您需要將顯示數據的數據記錄分開。

我只每秒一次顯示文本的最後發言權10KB。您仍然可以將所有日誌記錄保存在某個數據結構中。但是你不需要將它們全部推送到用戶界面。

或者你可以寫自己的文字顯示控制但那將是更多的工作。

+0

我只顯示它,所以我可以使用textbox.length函數讀取它的大小,我應該將它記錄在文件中嗎?然後計算該文件的大小? – 2012-02-19 17:27:32

+0

爲什麼你不把它存儲在一個字符串變量? – usr 2012-02-19 18:40:26

+1

哇我實際上從來沒有這樣做,這聽起來像一個良好的想法 – 2012-02-20 04:12:10