2016-03-28 6 views
2

Ich versuche einen Timer zu verwenden, um nach einer gewissen Zeit eine Fehlerbox zu erzeugen.Verwenden von Timern in C# mit Kinect-Funktionen

Ich verwende derzeit Kinect und die Gesichtseigenschaften. Diese

ist das, was ich bisher:

LookingAwayResult.Text = frameResult.FaceProperties[FaceProperty.LookingAway].ToString(); 

Check = frameResult.FaceProperties[FaceProperty.LookingAway].ToString(); 

int TimeDelay = 5000; 
if (Check == "Yes") 
{ 
    Thread.Sleep(TimeDelay); 

    MessageBox.Show("Looking is set to Yes", "Looking Error", 
     MessageBoxButton.OK, MessageBoxImage.Exclamation 
    ); 
    LookingAwayResult.Text = Check; 
} 

Ich glaube nicht, dass es richtig ist, denn sobald ich wegschauen, sondern nur die Message-Box hält das System Spamming.

Das ist, was ich bin wirklich nach:

Sobald die Person schaut weg, ich will ein Timer starten, so dass, wenn sie für mehr als 10 Sekunden wegschauen, das Meldungsfeld auf dem Bildschirm erscheint, nur der eine. Und Sie müssen "OK" wählen, damit das System wieder läuft. Alles unter 10 Sekunden ignoriert das System.

Bin ich mit diesem Code bitte in der richtigen Zeile?

Antwort

-1

Eine einfache Möglichkeit ist die Verwendung von 2 Timern. Ein Timer startet, wenn eine Person wegschaut. Der andere Timer wird immer 50ms abfragen, um zu überprüfen, ob die Person schaut.

//initilize look away timer for 10 seconds 
    Timer lookAwayTimer = new Timer(interval: 10000); 

    //inialize the poll tiomer for 50 ms 
    Timer pollTimer = new Timer(interval: 50); 
    public ClassConstructor() 
    { 
     //if 10 seconds expires then show message box 
     lookAwayTimer.Elapsed += (s, e) => 
     { 
      MessageBox.Show("Looking is set to yes", "Looking Error", MessageBoxButton.OK); 
     }; 

     //enable poll timer 
     pollTimer.Enabled = true; 

     //check if person is looking. if they are then enable the lookAwayTimer. If they stop looking 
     //then disable the timer 
     pollTimer.Elapsed+=(s,e)=> 
     { 
      LookingAwayResult.Text = frameResult.FaceProperties[FaceProperty.LookingAway].ToString(); 

      Check = frameResult.FaceProperties[FaceProperty.LookingAway].ToString(); 

      if(Check=="Yes") 
      { 
       lookAwayTimer.Enabled = true; 
      } 
      else 
      { 
       lookAwayTimer.Enabled = false; 
      } 

     } 
    } 
+0

Das OP ist neu für Timer und Ihr Beispiel verwendet LINQ? – Snoopy