Ich arbeite derzeit an einem kleinen Projekt mit einem Kinect mit dem OpenNI C# -Wrapper. Für dieses Projekt werden eine Tiefe, ein Bild und ein Benutzerknoten mithilfe einer XML-Konfigurationsdatei und der Methode Context.CreateFromXmlFile
erstellt. Ein separater Thread gestartet, der eine sehr einfache Schleife tut (basierend auf dem UserTracker.net Beispiel):OpenNI C# -Wrapper: WaitAnyUpdateAll Timeout
private void RunThread()
{
while(true)
{
try
{
context.WaitAnyUpdateAll(); //context is an OpenNI context object.
}
catch (Exception ex)
{
Console.WriteLine(ex.ToString());
}
//process some data
}
}
dies für eine Weile ganz gut funktioniert, bis das Bild der Kamera ändert sich nicht empfängt. Nach kurzer Zeit ist die folgende Ausnahme angezeigt:
A timeout has occured when waiting for new data!
at OpenNI.Context.WaitAnyUpdateAll()
at <file described above>
wird nach dieser Ausnahme alle nachfolgenden Anrufe geworfen context.WaitAnyUpdateAll
die gleiche Ausnahme, unabhängig davon, wird werfen, was die Eingabe. Nach einer Weile ändert sich die Fehlermeldung in:
Wie kann ich mit keinem neuen Eingang mit OpenNI umgehen? Ich verstehe, dass wir eine Zeitüberschreitungsausnahme erhalten, wenn keine neuen Daten verfügbar sind, aber wie können wir diese Ausnahme wiederherstellen?