无法从其他线程将子项添加到 WrapPanel
本文关键字:添加 WrapPanel 其他 线程 | 更新日期: 2023-09-27 18:36:38
我是线程任务的新手,所以很明显为什么我不能做我正在做的事情。我不明白为什么我可以更改线程中WrapPanel
的Width
,但我无法向其添加子项。这是我的代码:
private void Grid_Loaded(object sender, RoutedEventArgs e)
{
Thread t = new Thread(LoadIcons);
t.SetApartmentState(ApartmentState.STA);
t.Start();
}
private void LoadIcons()
{
Foreach(icon present in directory)
{
Icon icon = new Icon { Width = 16, Height = 16};
Dispatcher.Invoke(new Action(() => pnlIcons.Width = 50)); //Will let me
Dispatcher.Invoke(new Action(() => pnlIcons.Children.Add(icon))); // Won't
}
}
你必须重写你的代码。将图标放在调度程序内以避免异常。
private void Grid_Loaded(object sender, RoutedEventArgs e)
{
Thread t = new Thread(LoadIcons);
t.SetApartmentState(ApartmentState.STA);
t.Start();
}
private void LoadIcons()
{
Dispatcher.Invoke(new Action(() =>
{
foreach(Icon present in directory)
{
present.Width = 16;
present.Height = 16;
pnlIcons.Width = 50;
pnlIcons.Children.Add(present);
}
}));
}
希望对您有所帮助。