2013-04-22 5 views
7

मैं वर्तमान में ओपनएनआई सी # रैपर के साथ एक किनेक्ट से जुड़ी एक छोटी परियोजना पर काम कर रहा हूं। इस प्रोजेक्ट के लिए एक गहराई, छवि और उपयोगकर्ता नोड एक XML कॉन्फ़िगरेशन फ़ाइल और Context.CreateFromXmlFile विधि का उपयोग करके बनाए जाते हैं। एक अलग धागा शुरू कर दिया है जो एक बहुत ही सरल पाश (UserTracker.net उदाहरण के आधार पर) करता है:ओपनएनआई सी # रैपर: WaitAnyUpdateAll टाइमआउट

private void RunThread() 
{ 
    while(true) 
    { 
     try 
     { 
      context.WaitAnyUpdateAll(); //context is an OpenNI context object. 
     } 
     catch (Exception ex) 
     { 
      Console.WriteLine(ex.ToString()); 
     } 

     //process some data 

    } 
} 

यह थोड़ी देर के लिए बस ठीक काम करता है, छवि कैमरा प्राप्त करता परिवर्तन नहीं होता है जब तक। कुछ समय निम्न अपवाद दिखाया गया है के बाद:

A timeout has occured when waiting for new data! 
    at OpenNI.Context.WaitAnyUpdateAll() 
    at <file described above> 

के बाद इस अपवाद context.WaitAnyUpdateAll के बाद के सभी कॉल फेंक दिया जाता है एक ही अपवाद है, क्या इनपुट है की परवाह किए बिना फेंक देते हैं। कुछ समय बाद त्रुटि संदेश में परिवर्तन होता है:

OpenNI.StatusException: The server has disconnected! 
    at OpenNI.Context.WaitAnyUpdateAll() 
    at <file described above> 

ओपनएनआई का उपयोग करके मैं कोई नया इनपुट कैसे सौदा कर सकता हूं? मैं समझता हूं कि जब कोई नया डेटा उपलब्ध नहीं होता है तो हमें टाइमआउट अपवाद मिलता है, लेकिन हम इस अपवाद से कैसे ठीक हो सकते हैं?

उत्तर

5

यह पता चला है कि समस्या यह थी कि मैंने एक असुरक्षित पाश का उपयोग नहीं किया था। ऐसा लगता है कि WaitAnyUpdateAll को एक असुरक्षित संदर्भ में चलाने की आवश्यकता है, और मैंने इसे यहां नहीं किया। असुरक्षित कीवर्ड को फ़ंक्शन परिभाषा में जोड़ने से समस्या हल हो गई।

संबंधित मुद्दे