none
想請教...能否讓程式執行後,10秒內不執行第二次 RRS feed

  • 問題

  • 目前是在寫Kinect的手勢判定

    手高過頭之後會出現MessageBox

    但是測試時發現手一過頭,MessageBox就一次滿出來了

    不知道能不能編寫為

    第一個MessageBox出現之後,10秒後才能出現第二個這樣的設置...

    稍微看一下是不是也是用Timer呢?

    看Timer的範例大部分都是規律的幾秒執行一次...Orz

    懇求各位前輩解答了

    不好意思更補一下程式碼...

            private void ProcessGesture(Joint head, Joint rightHand, Joint leftHand,Joint body)
            {
                if (body.Position.Y >= head.Position.Y)
                {
                    string filename = NewFileName();
                    SaveToFile(filename);
                    System.Windows.MessageBox.Show("頭低於身體");
                }
            }

    我該怎麼讓這個方法執行第一次之後,10秒內不能執行第二次呢


    • 已編輯 汗衫 2014年12月10日 下午 10:56 補程式碼
    2014年12月10日 上午 12:35

解答

  •          bool bProcess=true ;
    
            private void timer1_Tick(object sender, EventArgs e)
            {
                timer1.Enabled = false;
                bProcess = true;
            }
    
            private void ProcessGesture(Joint head, Joint rightHand, Joint leftHand,Joint body)
            {
                if (bProcess)
                {
                    if (body.Position.Y >= head.Position.Y)
                    {
                        string filename = NewFileName();
                        SaveToFile(filename);
                        MessageBox.Show("頭低於身體");
                        bProcess = false;
                        timer1.Enabled = true;
                    }
                }
            }
    timer的Interval設10秒,Enabled初始設為false試試...

    • 已標示為解答 汗衫 2014年12月12日 上午 07:56
    2014年12月11日 上午 01:24

所有回覆

  • 如果是除錯用,請改用 System.Diagnostics 裡面的 Debug 類別,把訊息輸出到 Visual Studio 的輸出視窗內。

    如果是必要的,請用一個旗標值去控制它,不要讓它重覆出現。


    強力監督SQL Injection問題!!

      • 小朱的技術隨手寫:http://www.dotblogs.com.tw/regionbbs/
      • 雲端學堂Facebook: http://www.facebook.com/studyazure

    2014年12月10日 上午 12:45
    版主
  • Thread.sleep(10000);
    2014年12月10日 上午 02:25
  • 把偵測到的時間記錄, 和上一次的紀錄相比就可以了吧

    在現實生活中,你和誰在一起的確很重要,甚至能改變你的成長軌跡,決定你的人生成敗。 和什麼樣的人在一起,就會有什麼樣的人生。 和勤奮的人在一起,你不會懶惰; 和積極的人在一起,你不會消沈; 與智者同行,你會不同凡響; 與高人為伍,你能登上巔峰。

    2014年12月10日 上午 04:36
    版主
  • 您可以參考這篇討論的做法:How to display messagebox only one time in a loop

    2014年12月10日 下午 12:15
  • 各位不好意思,補上程式碼了
    2014年12月10日 下午 10:57
  •          bool bProcess=true ;
    
            private void timer1_Tick(object sender, EventArgs e)
            {
                timer1.Enabled = false;
                bProcess = true;
            }
    
            private void ProcessGesture(Joint head, Joint rightHand, Joint leftHand,Joint body)
            {
                if (bProcess)
                {
                    if (body.Position.Y >= head.Position.Y)
                    {
                        string filename = NewFileName();
                        SaveToFile(filename);
                        MessageBox.Show("頭低於身體");
                        bProcess = false;
                        timer1.Enabled = true;
                    }
                }
            }
    timer的Interval設10秒,Enabled初始設為false試試...

    • 已標示為解答 汗衫 2014年12月12日 上午 07:56
    2014年12月11日 上午 01:24
  • 感謝,可以了QQ
    2014年12月12日 上午 07:56