1

我们正在使用 C# 为桌面使用 VS2012 Express 中的 LeapMotion SDK 开发应用程序。其中我们向 Leap Controller 对象添加了一个监听线程。如此:

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

OnFrame()控制器对象对诸如etc之类的重写方法进行回调。

问题是侦听器线程在一定数量的回调后自动退出,范围从 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

1

我在这里回答了一个相关问题: Leap Listener controller stop working after some time in VS2012

简而言之:您的控制器和侦听器对象超出范围并由 GC 处理。

于 2014-02-09T11:21:02.937 回答
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 回答