Ich arbeite mit der Kinect, und manchmal wird es Mitte Programm herunterfahren, wodurch alle Arten von Fehlern verursacht werden. Da dieses Problem nicht behoben werden kann, möchte ich mein Programm so einstellen, dass es angehalten wird, wenn Kinect dies tut.warten, bis Kamera wieder angeschlossen wird C#
public ManikinTrackingManager()
{
KinectSensor.GetDefault().IsAvailableChanged += MainWindow_IsAvailableChanged;
}
private bool kinnected = true;
private void MainWindow_IsAvailableChanged(object sender, IsAvailableChangedEventArgs e)
{
if (e.IsAvailable == true)
{
SpeechSynthManager.SpeakAsync("Kinect has been found!");
kinnected = true;
}
else
{
SpeechSynthManager.SpeakAsync("Your Kinect has been disconnected!");
SpeechSynthManager.SpeakAsync("Please wait while I try to fix this problem!");
kinnected = false;
waitForReconnect();
}
SpeechSynthManager.SpeakAsync("CHANGED " + e.IsAvailable.ToString());
}
Das ist, was ich fangen muss trennen. Allerdings, wenn ich versuche, einen Timer auf einer Schleife zu verwenden, zu warten, bis die Kamera wieder angeschlossen wird, mit den Worten:
void waitForReconnect()
{
while (kinnected == false)
{
Thread.sleep(500);
}
}
Doch statt pausieren, bis die Kinect wieder verbunden wird, dieser Code nur friert meinen ganzen Computer. Was sollte ich noch versuchen?
Wird das erneute Verbindungsfeuer 'IsAvailableChanged' nicht erneut mit' IsAvailable' als wahr angezeigt? – stuartd
Es sollte, aber ich bin mir nicht sicher, ob die Reconnect-Trigger IsAvailableChanged @stuartd – Flotolk
@Flotolk, gibt 'SpeakAsync' 'Task' zurück? – Nkosi