1

C# を使用してデスクトップ用の VS2012 Express で LeapMotion SDK を使用してアプリケーションを開発しています。そこで、Leap Controller オブジェクトにリスナー スレッドを追加します。そのとおり:

Controller objcontroller = new Controller();
Listener objlistener = new LeapListener();
objcontroller.AddListener(objlistener);

コントローラー オブジェクトは、オーバーライドされたメソッドOnFrame()などのコールバックを行います。

問題は、3000 から 5500 の範囲の一定数のコールバックの後、リスナー スレッドが自動的に終了することです。出力ウィンドウには、次のテキストが表示されます。

The thread (0x1614) has exited with code 0 (0x0).

LeapMotion は、最大 100 fps のレートでフレームを報告するモーション検出デバイスです。フレームが検出されると、OnFrame()メソッドが呼び出されます。

try catch .. を使用してみましたが、例外はスローされません - 終了コードが 0 であるためです。メモリ消費量を超えているため、コンパイラがスレッドをシャットダウンしているように感じます。

これに関するアイデアは役に立ちます。

プラットフォーム ターゲットは x86 で、.net フレームワーク ターゲットは 4.0 です。

4

2 に答える 2

0

実際には、WPF と Leap コードの問題です。

この場合、リスナーの終了時にコントローラーを再割り当てしただけです。クラスで Listener オブジェクトをグローバルに次のように宣言しました。

public static Listener objlistener; 
public static Controller controller;

これを onExit() イベントに追加します

public override void OnExit(Controller controller)
{
          objlistener = new LeapListener();
          controller.AddListener(objlistener);
}
于 2013-10-12T12:41:05.030 に答える