【发布时间】:2013-09-06 09:48:07
【问题描述】:
我们正在使用 C# 桌面版 VS2012 Express 中的 LeapMotion SDK 开发应用程序。 其中我们向 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
【问题讨论】:
-
"我觉得内存消耗越来越大" 内存不足会导致 OutOfMemoryException。为什么不在这里显示线程代码的相关部分?似乎更有可能您没有正确检查错误等,并且线程只是退出,因为没有更多事情可做。
-
@stijn:线程是 OnFrame() 方法中包含的代码。当检测到帧时,该方法被回调。如果不是内存问题,那会是什么......??
-
“它是什么……??”它可以是任何东西。您没有显示任何代码,所以我们完全不知道如何缩小可能性。
-
您是否持有对控制器对象(objController)的持久引用?如果不是,它将在确定的间隔后收集垃圾,这可以解释您观察到的行为。
标签: c# multithreading visual-studio leap-motion