/// <summary> /// Execute shutdown tasks /// </summary> /// <param name="sender">object sending the event</param> /// <param name="e">event arguments</param> private void MainWindow_Closing(object sender, CancelEventArgs e) { CompositionTarget.Rendering -= this.DispatcherTimer_Tick; if (this.dispatcherTimer != null) { this.dispatcherTimer.Stop(); this.dispatcherTimer.Tick -= this.DispatcherTimer_Tick; } if (this.bodyFrameReader != null) { // BodyFrameReader is IDisposable this.bodyFrameReader.Dispose(); this.bodyFrameReader = null; } if (this.gestureDetector != null) { // The GestureDetector contains disposable members (VisualGestureBuilderFrameSource and VisualGestureBuilderFrameReader) this.gestureDetector.Dispose(); this.gestureDetector = null; } if (this.kinectSensor != null) { this.kinectSensor.Close(); this.kinectSensor = null; } }
/// <summary> /// Initializes a new instance of the MainWindow class /// </summary> public MainWindow() { // initialize the MainWindow this.InitializeComponent(); // only one sensor is currently supported this.kinectSensor = KinectSensor.GetDefault(); // open the sensor this.kinectSensor.Open(); // set the initial status text this.UpdateKinectStatusText(); // open the reader for the body frames this.bodyFrameReader = this.kinectSensor.BodyFrameSource.OpenReader(); // initialize the BodyViewer object for displaying tracked bodies in the UI this.kinectBodyView = new KinectSkeletonView(this.kinectSensor); // initialize the GestureDetector object this.gestureResultView = new GestureResult(false, false, false, false, false, -1.0f, false, false, false, false, false, false, false, false, -1.0f, -1.0f); this.gestureDetector = new GesturesDetector(this.kinectSensor, this.gestureResultView); // set data context objects for display in UI this.DataContext = this; this.kinectBodyViewbox.DataContext = this.kinectBodyView; this.gestureResultGrid.DataContext = this.gestureResultView; }
/// <summary> /// Disposes the GestureDetector object /// </summary> /// <param name="disposing">True if Dispose was called directly, false if the GC handles the disposing</param> protected virtual void Dispose(bool disposing) { if (disposing) { if (this.gestureDetector != null) { this.gestureDetector.Dispose(); this.gestureDetector = null; } } }