C# 当窗口不在焦点C时侦听器丢失#

C# 当窗口不在焦点C时侦听器丢失#,c#,winforms,leap-motion,C#,Winforms,Leap Motion,我有一个听众 public class LeapEventListener : Listener { public string frame = string.Empty; public string Frame { get { return frame; } } public event EventHandler FrameChanged; private void SetFrame(string value) { if (value

我有一个听众

public class LeapEventListener : Listener
{
    public string frame = string.Empty;
    public string Frame { get { return frame; } }
    public event EventHandler FrameChanged;

    private void SetFrame(string value)
    {
        if (value == null) value = string.Empty;
        if (frame == value) return;
        frame = value;
        var handler = FrameChanged;
        if (handler != null) handler(this, EventArgs.Empty);

    }
    public override void OnFrame (Controller controller)
    {
         Frame frame = controller.Frame();
         FingerList fingers = frame.Fingers;

        SetFrame("Frame id: " + frame.Id); 
    }

    public override void OnInit (Controller controller)
    {
        Console.WriteLine ("Initialized");
    }

    public override void OnConnect (Controller controller)
    {
        Console.WriteLine ("Connected");
        //If using gestures, enable them:
        controller.EnableGesture (Gesture.GestureType.TYPE_CIRCLE);
    }

    //Not dispatched when running in debugger
    public override void OnDisconnect (Controller controller)
    {
        Console.WriteLine ("Disconnected");
    }
}
然后在我的Form1.cs中使用global

Controller controller = new Controller();
LeapEventListener listener = new LeapEventListener();
并以公开形式1()

一切正常,直到我从窗口离开焦点。如果我离开焦点,标签文本不再改变,然后我带着焦点回到窗口,标签文本开始随着来自监听器的信息而改变


当我没有聚焦窗口时,为什么监听器不工作?

Leap API有前台和后台应用程序的概念。默认情况下,只有前台应用程序接收跟踪数据。这是为了防止应用程序在用户与其他应用程序交互时接收输入

如果您确实希望在后台使用帧,并且确信它不会导致问题,则可以请求后台帧策略:

当另一个非Leap应用程序具有焦点时,启用此策略将获得帧。如果在启用Leap的应用程序运行时需要帧,则可以使用未记录的策略标志(1
string fingers = listener.frame;
controller.AddListener(listener);
label1.DataBindings.Add("Text", listener, "Frame");