我有一个Thread
从第三方检索对象API
并将它们存储在一个TreeView
列表中List<TreeView>
。我的意图是在TreeView
内部GUI
显示节点,但到目前为止我还没有成功。
由于我尝试了几乎所有类型的Dispatcher.Invoke
东西,我认为我需要引发一个事件并以某种方式传递List<TreeView>
对象,但我不知道如何去做。无论如何,我的目标是TreeView
从不同于 UI 的线程更新。
提前致谢。
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();
}