2016-03-28 4 views
2

Belirli bir süre sonra hata kutusu oluşturmak için bir zamanlayıcı kullanmaya çalışıyorum.Kinect özellikleriyle C# cinsinden zamanlayıcıları kullanma

Şu anda Kinect ve yüz özelliklerini kullanıyorum.

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; 
} 

Ben en kısa uzağa bakmak gibi mesaj kutusu sadece sistemi spam tutar sağ yüzünden olduğunu sanmıyorum:

Bu defa ne var. Bu ben buyum

gerçekten sonra:

kısa sürede kişi uzağa bakar gibi ben bir zamanlayıcı başlamak istiyorum bu yüzden uzakta fazla 10 saniye boyunca bakarsanız, mesaj kutusu ekranda görünmesi, sadece biri. Sistemin tekrar çalışmaya devam etmesi için "Tamam" ı seçmelisiniz. 10 saniyeden kısa bir süre sonra sistem bunu yok sayar.

Bu kodla doğru hatlarda mıyım lütfen?

cevap

-1

Bunu yapmanın basit bir yolu 2 zamanlayıcı kullanmaktır. Bir kişi uzaktayken bir zamanlayıcı başlayacaktır. Diğer zamanlayıcı, kişinin bakıp bakmadığını kontrol etmek için 50ms'u yoklayacak.

//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

OP zamanlayıcılar için yeni ve örneğiniz LINQ kullanıyor? – Snoopy