2

我在 WPF 应用程序中使用 Kinect,Dan Fernández 在他的快速入门视频系列中教我们如何在调用事件“Window_Closing”(这是 C# 中的新功能,我猜它是委托或事件处理程序)时停止传感器。问题是,如果我按下 Visual Studio UI 中的停止按钮停止运行,我的 Kinect 不会停止,然后我必须再次运行应用程序并单击 X 按钮将其关闭。

有没有更通用的方法来通过我的代码中的应用程序关闭事件来停止 Kinect?

谢谢你。

    void StopKinect(KinectSensor sensor) {
        if (sensor != null) {
            sensor.Stop();

            if (sensor.AudioSource != null)
            {
                sensor.AudioSource.Stop();
            }
        }
    }

    private void Window_Closing(object sender, System.ComponentModel.CancelEventArgs e)
    {
        StopKinect(kinectSensorChooser1.Kinect); 
    }
4

2 回答 2

1

当您单击 VS 上的停止按钮时,您会中断该过程。所以永远不会调用 Windows_Closing 事件。Kinect 不会停止。

于 2012-09-07T18:20:42.360 回答
0

您如何定义 Kinect 传感器是否已停止?

我建议在您用来停止 Kinect 的方法周围添加异常处理。

try
{
   StopKinect(kinectSensorChooser1.Kinect); 
}
catch(Exception ex)
{
   //Log Exception
}

如果应用程序在尝试停止 Kinect 传感器时抛出未处理的异常,这将为您提供一种识别它的方法。

您能否确认Window_Closing事件是否触发?在函数中添加一个断点,如果没有命中,那么你就会知道问题所在。另一种方法可能是使用 @Bob 建议的不同事件清理 Kinect 传感器。当 VS 停止调试时,进程可能会被终止,因此您包含清理代码的事件可能不会被调用。

于 2012-08-31T16:17:54.170 回答