无法停止kinect相机冻结我的应用程序



我使用的是kinect SDK 1.7(因为只有那个适用于win 7)。

我的程序运行良好,我可以更改视频模式的深度和颜色没有错误。但当我想用右上角的红色十字关闭主窗体的角按钮关闭程序时,它就错了。事实上,即使我在Deactivate Sensor中设置了断点,它也会缝合。。它从未被触发??

我在下面写的代码没有成功。

 private void DeActivateSensor()
    {
        if (kinectSensor != null)
        {
            if (kinectSensor.SkeletonStream.IsEnabled) { kinectSensor.SkeletonStream.Disable();}
            if (kinectSensor.ColorStream.IsEnabled) { kinectSensor.ColorStream.Disable(); }
            if (kinectSensor.DepthStream.IsEnabled) {kinectSensor.DepthStream.Disable();}

            Thread.Sleep(1000);
            kinectSensor.ColorFrameReady -= new EventHandler<ColorImageFrameReadyEventArgs>(kinectSensor_ColorFrameReady);
            kinectSensor.DepthFrameReady -= new EventHandler<DepthImageFrameReadyEventArgs>(kinectSensor_DepthFrameReady);
            // since i dont have skelleton events i dont need to repeat that for it
            try
            {
                if (kinectSensor.IsRunning) { kinectSensor.Stop(); }
            }
            catch
            {
                Debug.WriteLine("unknown Exception ");
            }
            Thread.Sleep(1000);
            if (kinectSensor != null) { kinectSensor.Dispose(); }
        }
    }

    private void MainForm_Load(object sender, EventArgs e)
    {
        DeActivateSensor();
    }
    private void MainForm_FormClosing(object sender, FormClosingEventArgs e)
    {
        DeActivateSensor();
    }

这很奇怪。我认为这不是一个好答案。这更像是一种肮脏的变通方法。

使用vs2015调试。事实证明,在我正确关闭活动流之后。并正确注销了我的新颜色和新深度帧事件。接下来,应用程序在kinectsensor.stop()和kinectsensor上冻结。Dispose()。移除这些止动块();和dispose();命令,允许应用程序关闭,尽管关闭需要很长时间,比如10秒左右,这对我来说很奇怪

所以,不关闭这个摄像头,它就关闭了。。奇怪的

我不认为这是推荐的方法,所以如果有人知道如何以正确的方式做到这一点,我会洗耳恭听。

最新更新