我的程序与服务器建立连接后,把服务器发来的信息进行处理:1、当发来的信息为 111∵111,222,333,444,555∵
   时进行"∵"分割menutext,将tempf[1]进行","分割menutextTemp
   后将menutextTemp的内容逐项添加到menulistBox中!
   我的程序实现了这个功能,可是但正常判别了几次后就會出錯一次!
   正常的情況下被∵分割后應該menutext.Lenght=3,出錯時menutext.Lenght<3!
   隔幾次正常就會出現出錯一次,是不是我有什麽資源沒有釋放,接受的信息填滿后,
   程序自動釋放再接受時,傳來的數據被分開了?如果是這樣請您告訴我該怎樣做好嗎?
   謝謝了!(可以确定服务器发送没有问题!)
   
代码如下:
   
while(!control)
{
 try
 {
  netStream = myClient.GetStream();
  byte[] messsageByte = new Byte[4096];
  netStream.Read(messsageByte,0,messsageByte.Length );
  readNessage = System.Text.Encoding.Default.GetString(messsageByte);
  netStream.Flush();
  
  string[] menutext=readNessage.Split('∵');
 
  if(menutext.Length=3)
  {
   menulistBox.Items.Clear();
   string[] menutextTemp=menutext[1].Split(',');
   menulistBox.Items.AddRange(menutextTemp);
   }
}

解决方案 »

  1.   

    我覺得你說的不對,我不對信息做任何處理直接顯示到richtext中,十幾次以後同一個信息
    正常因該是
                   111∵111,222,333,444,555∵
    會出現一次 
                   111∵111,222,333,
                   444,555∵
    這種情況!這種情況時就不能正確判定了!
      

  2.   

    既然这么规则的东西,你可以先replace
    while(!control)
    {
     try
     {
      netStream = myClient.GetStream();
      byte[] messsageByte = new Byte[4096];
      netStream.Read(messsageByte,0,messsageByte.Length );
      readNessage = System.Text.Encoding.Default.GetString(messsageByte);
      netStream.Flush();
      readNessage=readNessage.Replace("∵",",");//把∵全部用,代替
      string[] menutext=readNessage.Split(',');
     
         menulistBox.Items.Clear();
        menulistBox.Items.AddRange(menutext);
       
    }
      

  3.   

    程序看不出有什么错,既然出錯時menutext.Lenght<3!,你可以断点之后多试几次,到出错的时候,
    监视看看各个敏感的环节,比如menutext数组中到底有几个元素?它们的值如何?这样对分析错误就很方便了。