监听器线程自动退出

时间:2013-09-06 09:48:08

标签: c# multithreading visual-studio leap-motion

我们正在使用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

2 个答案:

答案 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);
}