void runtime_SkeletonFrameReady(object sender, BodyFrameArrivedEventArgs e) { bool receivedData = false; using (BodyFrame SFrame = e.FrameReference.AcquireFrame()) { if (SFrame == null) { // The image processing took too long. More than 2 frames behind. } else { skeletons = new Body[SFrame.SkeletonArrayLength]; SFrame.CopySkeletonDataTo(skeletons); receivedData = true; } } if (receivedData) { IEnumerable <Body> sel = (from s in skeletons where s.TrackingState == SkeletonTrackingState.Tracked select s); int num = 0; foreach (Body currentSkeleton in sel) { if (currentSkeleton != null) { processSkeleton(num, currentSkeleton); Console.WriteLine(num); } else { silenceSkeleton(num); } num++; } if (num == 0) { for (int i = 0; i < 4; i++) { silenceSkeleton(i); } } } else { for (int i = 0; i < 4; i++) { silenceSkeleton(i); } } }