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センサーを停止しようとしたときに、アプリケーションが未処理の例外をスローした場合、これにより、Kinectセンサーを識別する方法が提供されます。

Window_Closingイベントが発生したかどうかを確認できますか?関数内にブレークポイントを追加します。これがヒットしない場合は、問題がわかります。別の方法として、@Bobが提案した別のイベントでKinectセンサーをクリーンアップすることもできます。VSがデバッグを停止すると、プロセスが強制終了され、クリーンアップコードを含めたイベントが呼び出されない可能性があります。

于 2012-08-31T16:17:54.170 に答える