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

时间:2013-04-16 13:10:51

标签: c# wpf multithreading event-handling treeview

我有Thread从第三方API检索对象并将其存储在TreeView列表List<TreeView>中。我的意图是TreeView内的GUI显示节点,但到目前为止我没有成功。

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

提前致谢。

PS:我在WPF .NET 4

我的最新尝试:

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();
}

0 个答案:

没有答案