将复杂对象从AD传递到UI(WPF,C#)

将复杂对象从AD传递到UI(WPF,C#),c#,wpf,multithreading,event-handling,treeview,C#,Wpf,Multithreading,Event Handling,Treeview,我有一个线程,它从第三方API检索对象,并将它们存储在TreeViewlistlist中。我的意图是GUI中的TreeView显示节点,但到目前为止我还没有成功 由于我尝试了几乎所有类型的Dispatcher.Invoke东西,我认为我需要引发一个事件并以某种方式传递列表对象,但我不知道如何做。 无论如何,我的目标是从与UI线程不同的线程更新TreeView 提前谢谢 附言:我在WPF.net4上 我的最新尝试: private void runButton_Click(object sende

我有一个
线程
,它从第三方
API
检索对象,并将它们存储在
TreeView
list
list
中。我的意图是
GUI
中的
TreeView
显示节点,但到目前为止我还没有成功

由于我尝试了几乎所有类型的
Dispatcher.Invoke
东西,我认为我需要引发一个事件并以某种方式传递
列表
对象,但我不知道如何做。 无论如何,我的目标是从与UI线程不同的线程更新
TreeView

提前谢谢

附言:我在
WPF.net4

我的最新尝试:

private void runButton_Click(object sender, RoutedEventArgs e) 
{
    if (PfUtils.isAPIConnected() && !GUIlocked) 
    {
        this.lockGUI();
        paralell_thread = new Thread(new ThreadStart(RunPowerFlowSimulation));
        paralell_thread.IsBackground = true;
        paralell_thread.Name = "RunPowerFlow";
        paralell_thread.ApartmentState = ApartmentState.STA;
        paralell_thread.Start();
        mainTabPanel.SelectedIndex = 1;
    }
}

private void RunPowerFlowSimulation() 
{
    PfUtilsUtilsExtended pf = new PfUtilsUtilsExtended();
    pf.performLoadFlow(statusLabel, pgbar1);
    TreeView tv = pf.gerRelevantObjects(PfUtils.GetActiveProject(), statusLabel, pgbar1);
    tv.Dispatcher.Invoke(new Action(() => { objectTreeView.ItemsSource = tv.Items; }));

    this.UnLockGUI();
}

您是否使用类似于
ObservableCollection
的方法来存储要在树视图中显示的数据?发布一些代码和XAML。否则这都是推测。请注意,Dispatcher.Invoke上的一些东西需要.NET 4.5,如果在没有它的计算机上运行,则会很难崩溃。@Terje-如果代码是根据.NET 4.5编译的,那么即使没有安装.NET 4.5,程序也不会运行。此外,用户正在使用.NET4.0,因此可以使用Dispatcher.Invoke而无需担心。我希望我能否决评论。你能给我们看一下XAML代码似乎是正确的。