none
資料顯示會突然停止 RRS feed

  • 問題

  • 我想請問一下  我的程式這樣寫  是不是哪理有問題  我主要目前已經做到在SetText3(str1)和SetText4(str2)可以一個一個顯示值了會自動更新

    但是跑一小段時間例如一分鐘後  就會停在那不動   有時候會過很久才又開始動    想請教一下是因為資料讀取速度也會影響到 還是因為我沒有讓其他

    SetText的畫面顯示做更新使資料溢出讓他無法再跑?    若兩者不會造成此原因 是我程式少寫了哪些步驟造成呢?

          

                string[] Split = str.Split('-');
                for (int i = 0; i < Split.Length - 4; i += 7)>>>有7-byte
                {
                    string nc = null, nd = null;
                    if (Split[i] == "FF" && Split[i + 1] != "FF")>>>拆解要的兩筆資料為nc和nd
                    {
                        nc = Split[i + 3] + " ";
                        int num = Int32.Parse(nc, System.Globalization.NumberStyles.HexNumber);
                        string str1 = num.ToString() + " ";
                        SetText1(str1); >>顯示抓取nc出來的所有資料

                        nd = Split[i + 4] + " ";
                        int value = Int32.Parse(nd, System.Globalization.NumberStyles.HexNumber);
                        string str2 = value.ToString() + " ";
                        SetText3(str2);>>>顯示抓取nd出來的所有資料

                        SetText2(str1);>>將nc的資料一個一個顯示並不斷更新
                        SetText4(str2);>>將nd的資料一個一個顯示並不斷更新
                        System.Threading.Thread.Sleep(50);
                        Application.DoEvents();
              }
                }
            }

    private void SetText(string text)
            {
                if (this.txtIn.InvokeRequired)
                {
                    SetTextCallback d = new SetTextCallback(SetText);
                    this.Invoke(d, new object[] { text });
                }
                else this.txtIn.Text += text;
            }


            //for 2010/07/18
            private void SetText1(string text1)
            {
                if (this.txtE.InvokeRequired)
                {
                    SetTextCallback d1 = new SetTextCallback(SetText1);
                    this.Invoke(d1, new object[] { text1 });
                }
                else this.txtE.Text += text1;
            }


            //for 2010/08/05
            private void SetText2(string text2)
            {
                if (this.txtECG.InvokeRequired)
                {
                    SetTextCallback d2 = new SetTextCallback(SetText2);
                    this.Invoke(d2, new object[] { text2 });
                }
                else this.txtECG.Text = text2;
            }

            //for 2010/07/30 
            private void SetText3(string text3)
            {
                if (this.txtE.InvokeRequired)
                {
                    SetTextCallback d3 = new SetTextCallback(SetText3);
                    this.Invoke(d3, new object[] { text3 });
                }
                else this.txtT.Text += text3;
            }

            //for 2010/08/05
            private void SetText4(string text4)
            {
                if (this.txtECG.InvokeRequired)
                {
                    SetTextCallback d4 = new SetTextCallback(SetText4);
                    this.Invoke(d4, new object[] { text4 });
                }
                else this.txtTemp.Text = text4;
            }
        }
    }

    2010年8月10日 上午 08:28

所有回覆

  • SetText3和SetText4,判斷InvokeRequired和寫入Text的TextBox不一致耶...
    2010年8月10日 上午 09:50
  • 字串相加本身也會越來越慢。
    論壇是網友平等互助 保證解答請至 微軟技術支援服務
    提問時,錯誤情境描述與錯誤訊息很重要,情境描述包含你做了什麼,預期的結果與實際發生的結果。一個最爛的問法範例:「我的電腦電腦怎麼不能開機?」誰知道你家是不是沒電還是你根本找不到電源鈕。
    2010年8月10日 下午 03:09
  • 我建議你在各個 SetText 方法中加入 counter, 然後把中斷點設在主程式 for 迴圈最後面設定中斷點, 然後在偵錯時把那些 counter 加入監看式, 追蹤一下這些 SetText 方法總共被呼叫了幾次。
    ASP.NET 2Share - http://www.dotblogs.com.tw/johnny
    2010年8月11日 上午 12:54
  • 是唷!! 你是說兩種寫法會不一樣 我將他們寫法寫成相同嗎?
    2010年8月11日 上午 02:20
  • 恩= = 

    只是想問問 這樣會影響到之後的話圖嗎?

    還是還可以再修改?

     

    2010年8月11日 上午 02:21
  • 恩  好的
    2010年8月11日 上午 02:21