2013-04-22 8 views
7

現在、OpenNI C#ラッパーを使用したKinectを含む小さなプロジェクトに取り組んでいます。このプロジェクトでは、xml構成ファイルとContext.CreateFromXmlFileメソッドを使用して、深度、イメージ、およびユーザーノードが作成されます。これは、カメラは変更されません受信画像まで、しばらくの間だけで正常に動作しOpenNI C#ラッパー: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 

    } 
} 

:別のスレッドには、(UserTracker.net例に基づいて)非常に単純なループを実行している開始されます。次の例外が示されているが、短い後:

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> 

は、どのように私はOpenNIを使用していない新しい入力に対処することができますか?私は、新しいデータが利用できない場合にタイムアウト例外が発生することを理解していますが、この例外からどのように復旧できますか?

答えて

5

問題は、私が安全でないループを使用していないことが判明しました。 WaitAnyUpdateAllは安全でないコンテキストで実行する必要があると思われますが、ここではそれをしませんでした。関数定義にunsafeキーワードを追加することで問題は解決しました。