【问题标题】:Stopping Kinect when pressing Stop Button in Visual Studio UI?在 Visual Studio UI 中按下停止按钮时停止 Kinect?
【发布时间】:2012-09-08 02:20:42
【问题描述】:

我在 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); 
    }

【问题讨论】:

标签: kinect shutdown


【解决方案1】:

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

【讨论】:

    【解决方案2】:

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

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

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

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

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

    【讨论】:

    • 杰米,我不明白。当我调用 StopKinect(KinectSensor) 方法时,kinect 传感器停止,当我单击应用程序的 X 按钮时调用该方法。我已经实现了您建议的 try catch 块,但我不知道如何登录 WPF 或 Console.WriteLine,并且该块没有任何区别。也许你能更具体一点?无论如何,谢谢。
    • 如果是这种情况,您的原始帖子没有意义 - '问题是,如果我按下 Visual Studio UI 中的停止按钮停止运行,我的 Kinect 不会停止'。如果您正在调试异常将被捕获,让您在 VS 中看到它。当您在 VS 中停止调试时,进程被终止,我不确定这是否会允许您的 Window_Closing 事件及时触发 - 在事件中添加一个断点以确认。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-12-22
    • 1970-01-01
    • 2021-11-15
    • 1970-01-01
    • 1970-01-01
    • 2022-10-12
    相关资源
    最近更新 更多