try
                    {
                        System.Text.ASCIIEncoding asciiEncoding = new System.Text.ASCIIEncoding();
                        
                        //   将数据存入字符串缓冲区中 
                        for (int i = 0; i < n; i++)
                        {
                            if (b[i] == 2) 
                            {
                            // str = b[i + 4].ToString() + b[i + 5].ToString() + b[i + 6].ToString() + b[i + 7].ToString() + b[i + 8].ToString() + b[i + 9].ToString();
                             byte b1 = b[i + 4];
                             byte b2 = b[i + 5];
                             byte b3 = b[i + 6];
                             byte b4 = b[i + 7];
                             byte b5 = b[i + 8];
                             byte b6 = b[i + 9];
                             char c1 = (char)b1;
                             char c2 = (char)b2;
                             char c3 = (char)b3;
                             char c4 = (char)b4;
                             char c5 = (char)b5;
                             char c6 = (char)b6;
                             str = c1.ToString() + c2.ToString() + c3.ToString() + c4.ToString() + c5.ToString() + c6.ToString();                             //str = b1.ToString() + b2.ToString() + b3.ToString() + b4.ToString() + b5.ToString() + b6.ToString();
                            }
                          
                        }
                        this.Invoke((EventHandler)(delegate
                        {
                            this.richTextBox1.Text=str;
                        }));
                        
                        
                    }
                    catch (Exception)
                    {
                        return;
                    }
代码执行到Invoke就跳不出来了,一直输出同一段字符
我需要动态循环输出str的值,不知道哪里写的不合适

解决方案 »

  1.   

    try
    {
    System.Text.ASCIIEncoding asciiEncoding = new System.Text.ASCIIEncoding();

    //   将数据存入字符串缓冲区中 
    for (int i = 0; i < n; i++)
    {
    if (b[i] == 2) 
    {
    // str = b[i + 4].ToString() + b[i + 5].ToString() + b[i + 6].ToString() + b[i + 7].ToString() + b[i + 8].ToString() + b[i + 9].ToString();
    byte b1 = b[i + 4];
    byte b2 = b[i + 5];
    byte b3 = b[i + 6];
    byte b4 = b[i + 7];
    byte b5 = b[i + 8];
    byte b6 = b[i + 9];
    char c1 = (char)b1;
    char c2 = (char)b2;
    char c3 = (char)b3;
    char c4 = (char)b4;
    char c5 = (char)b5;
    char c6 = (char)b6;
    str = c1.ToString() + c2.ToString() + c3.ToString() + c4.ToString() + c5.ToString() + c6.ToString();
    this.Invoke((EventHandler)(delegate
    {
    this.richTextBox1.Text = str;
    }));
    }
      
    }
    }
    catch (Exception)
    {
    return;
    }
      

  2.   

    你的invoke不是在for循环之外吗?怎么循环输出?
      

  3.   

    放到for里和if里都是只能输出一次
      

  4.   

    try
    {
    System.Text.ASCIIEncoding asciiEncoding = new System.Text.ASCIIEncoding();

    //   将数据存入字符串缓冲区中 
    for (int i = 0; i < n; i++)
    {
    if (b[i] == 2) 
    {
    str = new string(new char[]{(char)b[i + 4],(char)b[i + 5],(char)b[i + 6],
    (char)b[i + 7],(char)b[i + 8],(char)b[i + 9]});
    this.Invoke((EventHandler)(delegate
    {
    this.richTextBox1.Text = str;
    this.richTextBox1.Update();
    Thread.Sleep(1);
    }));
    }
      
    }
    }
    catch
    {
    return;
    }
      

  5.   

    谢谢大侠,Thread.Sleep(1)搞定了,只是反应速度还有点慢,跟不上称重仪表的速度