WPF 从不同 class 检索飞跃信息

WPF retrieve leap info from different class

我的问题的快速版本是 WPF 不接受来自不同线程的变量。

error message: 
An unhandled exception of type 'System.InvalidOperationException' occurred in WindowsBase.dll

附加信息:调用线程无法访问此对象,因为另一个线程拥有它。

因为我订阅了跳帧事件,所以找不到第二个线程的解决方法。以下代码中是否有某种方法可以将框架信息放置在文本框中?

// MainWindow
LeapReader reader = new LeapReader();
public MainWindow()
{
    reader.Frame += reader_Frame;
}

void reader_Frame(string coordinate)
{
    //textbox which will output coordinates of the hand
    txtCoord.Text = coord;
}


// LeapReader
string _coordinates = "";
public delegate void StringEvent(string coord);
public event StringEvent Frame;

void SomeRetrievalMethod(Frame frame)
{
    _coordinates = Cursor.Position.ToString();
    Frame.Invoke(_coordinates);
}

将其发送回 TextBox's Dispatcher。如果您只使用绑定并让 WPF 为您处理线程之间的调度会更好。

void reader_Frame(string coordinate)
{
    //textbox which will output coordinates of the hand
    txtCoord.Dispatcher.Invoke(new Action(() => txtCoord.Text = coord));
}