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

时间:2015-12-03 11:43:05

标签: c# kinect

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

我的程序运行正常,我可以无误地更改深度和颜色的视频模式。但是当我想通过使用右上角的redcross close主窗体角按钮来关闭我的程序时出错了。实际上,即使我在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();
    }

1 个答案:

答案 0 :(得分:0)

这很奇怪。 我不认为这是一个很好的答案。 它更像是一种肮脏的编码解决方法。

使用vs2015调试。 事实证明,在我正确关闭活动流之后。 并正确地取消了我的新颜色和新的深度框架事件。 然后接下来应用程序接合冻结kinectsensor.stop()和kinectsensor.Dispose()。 删除这些stop();和dispose();命令,允许应用程序关闭,虽然需要很长时间才能关闭说10秒左右,这对我来说很奇怪

所以通过不关闭这个相机,它关闭..奇怪。

我不认为这是推荐的方式,所以如果有人知道如何以正确的方式做到这一点,那就是我所有的耳朵。