我正在使用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();
}
答案 0 :(得分:0)
这很奇怪。 我不认为这是一个很好的答案。 它更像是一种肮脏的编码解决方法。
使用vs2015调试。 事实证明,在我正确关闭活动流之后。 并正确地取消了我的新颜色和新的深度框架事件。 然后接下来应用程序接合冻结kinectsensor.stop()和kinectsensor.Dispose()。 删除这些stop();和dispose();命令,允许应用程序关闭,虽然需要很长时间才能关闭说10秒左右,这对我来说很奇怪
所以通过不关闭这个相机,它关闭..奇怪。
我不认为这是推荐的方式,所以如果有人知道如何以正确的方式做到这一点,那就是我所有的耳朵。