您可以为 Kinect 传感器状态更改时添加事件处理程序:
KinectSensor.KinectSensors.StatusChanged += Kinect_StatusChanged;
然后,当状态发生变化并且传感器已连接时,您可以像通常在启动时所做的那样初始化传感器:
void Kinect_StatusChanged(object sender, StatusChangedEventArgs e)
{
switch (e.Status)
{
case KinectStatus.Connected:
if (kinectSensor == null)
{
kinectSensor = e.Sensor;
Initialize();
}
break;
case KinectStatus.Disconnected:
if (kinectSensor == e.Sensor)
{
Clean();
// Notify user, change state of APP appropriately
}
break;
case KinectStatus.NotReady:
break;
case KinectStatus.NotPowered:
if (kinectSensor == e.Sensor)
{
Clean();
// Notify user, change state of APP appropriately
}
break;
default:
// Throw exception, notify user or ignore depending on use case
break;
}
}
总而言之,我在启动时使用的模式是:
- 订阅 StatusChanged 事件
- 尝试初始化 Kinect 传感器
然后当 Kinect 传感器的状态发生变化时,我的应用程序可以做出适当的反应。
请注意,这种类型的模式应该适用于所有应用程序,而不仅仅是这个特定的用例。所有启用 Kinect 的应用程序都应在 Kinect 传感器断开连接时做出适当反应。