侦听器线程自动退出
本文关键字:退出 线程 侦听器 | 更新日期: 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);
}