Kinect for windows:无法触发状态更改事件

时间:2013-12-06 07:55:01

标签: c# wpf kinect

我向StatusChanged事件添加了一个事件处理程序,但处理程序从未执行过:

我的WPF文件MainWindow.xaml.cs

 public MainWindow()
 {
      InitializeComponent();
      this.Loaded += this.MainWindow_Loaded;
      //...
 }

 protected void MainWindow_Loaded(object sender, RoutedEventArgs e)
 {
      KinectSensor.KinectSensors.StatusChanged += KinectSensors_StatusChanged;
      //...
 }
 void KinectSensors_StatusChanged(object sender, StatusChangedEventArgs e)
 {               
        switch (e.Status)
        {
            case KinectStatus.Connected:
                MessageBox.Show("CONNECTED");
                break;
            case KinectStatus.Disconnected:
                MessageBox.Show("DISCONNECTED");
                break;
            case KinectStatus.Initializing:
                MessageBox.Show("INITIALIZING");
                break;
            case KinectStatus.Error:
                MessageBox.Show("ERROR");
                break;
        }
        //...
    }

我可以用这个程序运行Kinect,无论我对Kinect做什么,都不能触发状态改变。我该怎么办?

1 个答案:

答案 0 :(得分:0)

每次调用它时,KinectSensor.KinectSensors.StatusChanged都可能返回一个新对象,而不是返回一个全局对象,或者它返回一个只在内部缓存弱引用的对象。

如果它执行上述任一操作,则KinectSensorCollection实例不会以您的代码为根,并且可能会在事件触发之前收集。尝试将对KinectSensorCollection实例的引用存储在MainWindow的成员变量中,并查看事件是否触发。