2012-05-14 1 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 Мне нужна отметка времени. Это большая вещь, и мне это нужно. И он пурпурный намного больше, чем простой таймер. Так что это не решит проблему. Btw Я всегда могу найти решение для себя, и все равно я вас побью: D – Fixus

ответ

1

Хорошо, поэтому я отвечаю за свою проблему. Это очень просто.

Из-за того, что моя система/машина перегружена или она замедляется от любых других причин, которые не анализируются так быстро, как они могли. Эта сыворотка, когда происходит это отставание, я не могу открыть рамку. Вот почему я получаю null.

пыльник решение задачи

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

Примите свой ответ, вы можете это сделать –