无法从另一个线程向WrapPanel添加子项

时间:2015-01-07 11:39:39

标签: c# wpf multithreading

我是线程化任务的新手,因此很明显为什么我不能做我正在做的事情。我不明白为什么我可以在我的帖子中更改Width的{​​{1}},但我无法添加一个孩子。这是我的代码:

WrapPanel

1 个答案:

答案 0 :(得分:1)

您必须重写代码。将图标放在Dispatcher中以避免异常。

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

希望它有所帮助。