侦听器线程自动退出

本文关键字:退出 线程 侦听器 | 更新日期: 2023-09-27 18:30:20

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

侦听器线程自动退出

我在这里回答了一个相关的问题:Leap 侦听器控制器在 VS2012 中工作一段时间后停止工作

简单地说:你的控制器和侦听器对象超出范围,被 GC 释放。

这实际上是WPF和Leap代码的问题。

在这种情况下,我只是在侦听器退出时重新分配了控制器。我在类中将侦听器对象全局声明为

public static Listener objlistener; 
public static Controller controller;

并将其添加到 onExit() 事件中

public override void OnExit(Controller controller)
{
          objlistener = new LeapListener();
          controller.AddListener(objlistener);
}