我想在不同的线程中动态创建自定义用户控件。我的代码是
var thread = new Thread(() =>
{
var uc = new UserControl05();
UserControl item = uc;
Parallel.ForEach(_allTabs, currentTab =>
{
if (currentTab.DocumentWindow.CheckAccess())
{
if (currentTab.DocumentWindow.IsSelected)
{
//some code
}
}
else
{
currentTab.DocumentWindow.Dispatcher.BeginInvoke(new Action(() =>
{
if (!currentTab.DocumentWindow.IsSelected) return;
if (currentTab.AnimatedCanvas.CheckAccess())
{
currentTab.AnimatedCanvas.Children.Add(item); //here I get error
}
else
{
currentTab.AnimatedCanvas.Dispatcher.BeginInvoke(new Action(() =>
{
currentTab.AnimatedCanvas.Children.Add(item);
}));
}
}));
}
});
});
thread.SetApartmentState(ApartmentState.STA);
thread.IsBackground = true;
thread.Name = "Create Control";
thread.Start();
我收到错误调用线程无法访问此对象,因为不同的线程拥有它。我搜索了解决方案并尝试在那里使用调度程序,但它没有帮助并引发相同的错误。我知道它正在发生,因为我在后台线程上创建了用户控件,但我不知道如何修复它。
有人可以提出一些建议吗?