2012-05-14 34 views
1

你好,我這運行時獲得NullReferenceException的NullReferenceException上OpenSkeletonFrame

void newSensor_AllFramesReady(object sender, AllFramesReadyEventArgs e) 
    { 
     Skeleton first = GetFirstSkeleton(e); 
     if (first == null) 
     { 
      return; 
     } 
     /** 
     * @TODO 
     * obsluzyc wyjatek null reference na wypadek gdy gubi szkielet 
     */ 
     long timestamp = e.OpenSkeletonFrame().Timestamp; 

它是在long timestamp

行這occurse而如果10-15秒,同樣的動作。例如,我正在記錄一些靜止的數據。我將它們記錄在每一幀中。幾秒鐘後,我得到了NullReferenceException

問題是什麼?

+0

是!你問這個問題,所以你不能打我回答它 –

+0

由於'TimeStamp'是時間的度量,你不能使用計時器嗎? –

+0

@OutlawLemur我需要一個時間戳。這是一件更大的事情,我需要它。而且它的嘌呤大得多,然後是簡單的計時器。所以這不能解決問題。順便說一句,我總是可以找到我自己的解決方案,但我仍然會打敗你:D – Fixus

回答

1

好吧,我爲我的問題找回答案。這很簡單。

當我的系統/機器過載時,或者由於其他原因造成的幀速度減慢,速度會降低。當這種滯後發生時,我不能打開框架。這就是爲什麼我得到空。問題的

婁解決方案

bool haveSkeletonData = false; 
using (SkeletonFrame skeletonFrame = e.OpenSkeletonFrame()) 
{ 
if (skeletonFrame != null) 
{ 
    if ((this.skeletonData == null) || (this.skeletonData.Length != skeletonFrame.SkeletonArrayLength)) 
    { 
     this.skeletonData = new Skeleton[skeletonFrame.SkeletonArrayLength]; 
    } 
    skeletonFrame.CopySkeletonDataTo(skeletonData); 
    haveSkeletonData = true; 
} 
else 
{ 
    haveSkeletonData = false; 
} 
} 

if (haveSkeletonData) 
{ 
    // here i can put code that is using my timestamp 
} 

這樣,我就安全了從空,我就可以用我的時間戳記,因爲我需要:)

+0

接受你自己的答案,你可以做到這一點 –

相關問題