我向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做什么,都不能触发状态改变。我该怎么办?
答案 0 :(得分:0)
每次调用它时,KinectSensor.KinectSensors.StatusChanged都可能返回一个新对象,而不是返回一个全局对象,或者它返回一个只在内部缓存弱引用的对象。
如果它执行上述任一操作,则KinectSensorCollection实例不会以您的代码为根,并且可能会在事件触发之前收集。尝试将对KinectSensorCollection实例的引用存储在MainWindow的成员变量中,并查看事件是否触发。