Kinect: ¿Cómo identifico el primer esqueleto seguido y hago cosas con él después

¿Cómo puedo identificar el primer esqueleto que rastreó el kinect y luego hacer cosas con él? Solo estoy interesado en el primer esqueleto y lo que venga después no los necesito. Preferiblemente, el siguiente esqueleto que entra no se rastrea en absoluto.

Alguien me puede ayudar con esto gracias. Actualmente el siguiente código que estoy usando no funciona. He intentado alguna consulta rápida de linq pero no estoy muy seguro de cómo usarla. Siempre teniendo errores con eso.

¿Alguien puede darme algunos ejemplos con los que puedo trabajar gracias de antemano!

private void SensorSkeletonFrameReady(object sender, SkeletonFrameReadyEventArgs e)
    {

            Skeleton[] skeletons = new Skeleton[0];


            using (SkeletonFrame skeletonFrame = e.OpenSkeletonFrame())
            {
                if (skeletonFrame != null)
                {
                    skeletons = new Skeleton[skeletonFrame.SkeletonArrayLength];
                    skeletonFrame.CopySkeletonDataTo(skeletons);
                }
            }

            using (DrawingContext dc = this.drawingGroup.Open())
            {
                // Draw a transparent background to set the render size
                dc.DrawRectangle(Brushes.Black, null, new Rect(160, 0.0, RenderWidth, RenderHeight));

                if (skeletons.Length != 0)
                {


                   foreach (Skeleton skel in skeletons)
                    {
                        RenderClippedEdges(skel, dc);


                        if (skel.TrackingState == SkeletonTrackingState.Tracked)
                        {
                            this.TrackingId = Skel;
                            sensor.SkeletonStream.AppChoosesSkeletons = true;
                            sensor.SkeletonStream.ChooseSkeletons(skel.TrackingId);

                            this.DrawBonesAndJoints(skel, dc);

                            if (skel == null)
                            {

                                Process.Start("wmplayer.exe", "C:\\Users\\User\\Downloads\\Test.wma");
                            }
                        }
                        else if (skel.TrackingState == SkeletonTrackingState.NotTracked)
                        {
                            sensor.SkeletonStream.AppChoosesSkeletons = false;
                        }
                    }
                }

                // prevent drawing outside of our render area
                this.drawingGroup.ClipGeometry = new RectangleGeometry(new Rect(160, 0.0, RenderWidth, RenderHeight));
            }

    }

Respuestas a la pregunta(2)

Su respuesta a la pregunta