2012-05-14 37 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

接受你自己的答案,你可以做到这一点 –

相关问题