window 不在焦点 C# 时听众丢失
Listener lost when window is not in focus C#
我有这个听众
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
Controller controller = new Controller();
LeapEventListener listener = new LeapEventListener();
并在 public Form1()
string fingers = listener.frame;
controller.AddListener(listener);
label1.DataBindings.Add("Text", listener, "Frame");
一切正常,直到我离开 window 的焦点。如果我离开焦点,标签文本不再改变,然后当我回到 window 焦点时,标签文本开始随着来自听众的信息而改变。
为什么当我没有聚焦 window 时侦听器不工作?
Leap API 有前台和后台应用的概念。默认情况下,只有前台应用程序接收跟踪数据。这是为了防止您的应用程序在用户与其他应用程序交互时接收输入。
如果您真的想要在后台使用框架 - 并且确定它不会造成问题 - 您可以申请背景框架政策:Foreground and Background Applications.
启用此策略将在另一个非 Leap 应用程序获得焦点时获取帧。如果您在启用 Leap 的应用程序中需要帧,可以使用一个未记录的策略标志 (1 << 15)。
我有这个听众
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
Controller controller = new Controller();
LeapEventListener listener = new LeapEventListener();
并在 public Form1()
string fingers = listener.frame;
controller.AddListener(listener);
label1.DataBindings.Add("Text", listener, "Frame");
一切正常,直到我离开 window 的焦点。如果我离开焦点,标签文本不再改变,然后当我回到 window 焦点时,标签文本开始随着来自听众的信息而改变。
为什么当我没有聚焦 window 时侦听器不工作?
Leap API 有前台和后台应用的概念。默认情况下,只有前台应用程序接收跟踪数据。这是为了防止您的应用程序在用户与其他应用程序交互时接收输入。
如果您真的想要在后台使用框架 - 并且确定它不会造成问题 - 您可以申请背景框架政策:Foreground and Background Applications.
启用此策略将在另一个非 Leap 应用程序获得焦点时获取帧。如果您在启用 Leap 的应用程序中需要帧,可以使用一个未记录的策略标志 (1 << 15)。