我们正在使用VS#Express中的LeapMotion SDK开发一个使用C#的桌面应用程序。 在那里我们向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
答案 0 :(得分:1)
我在这里回答了一个相关的问题: Leap Listener controller stops working after some time in VS2012
简单地说:您的控制器和侦听器对象超出范围并由GC处理。
答案 1 :(得分:0)
它实际上是WPF和Leap代码的问题。
在这种情况下,我只是在监听器的Exit上重新分配控制器。我在类中全局声明了一个Listener对象
public static Listener objlistener;
public static Controller controller;
并在onExit()事件
上添加此项public override void OnExit(Controller controller)
{
objlistener = new LeapListener();
controller.AddListener(objlistener);
}