如何使用c#WPF调用coust控件并将其添加到控件子级
嗨,我有一个我为我的网站创建的程序,我正在尝试更新它,以便代码的密集部分可以在单独的线程中运行。新线程创建了几个costure控件,我需要将这些控件作为主GUI线程上的子控件放置在容器中,但每次运行代码时,我都会遇到这样一个错误:“调用线程无法访问此对象,因为它属于另一个线程”。每次我运行代码并且程序试图调用控件时,抛出此错误后的调试器都会突出显示[if(FileStack.Dispatcher.CheckAccess())]下的代码部分。 这是我的密码如何使用c#WPF调用coust控件并将其添加到控件子级,c#,wpf,invoke,dispatcher,C#,Wpf,Invoke,Dispatcher,嗨,我有一个我为我的网站创建的程序,我正在尝试更新它,以便代码的密集部分可以在单独的线程中运行。新线程创建了几个costure控件,我需要将这些控件作为主GUI线程上的子控件放置在容器中,但每次运行代码时,我都会遇到这样一个错误:“调用线程无法访问此对象,因为它属于另一个线程”。每次我运行代码并且程序试图调用控件时,抛出此错误后的调试器都会突出显示[if(FileStack.Dispatcher.CheckAccess())]下的代码部分。 这是我的密码 public delegate voi
public delegate void ADDFiLEHandel(FileControlxaml File);
public void ADDFiles(FileControlxaml File)
{
if (FileStack.Dispatcher.CheckAccess())
{
FileStack.Children.Add(File); //this is the code that gets height-lighted by the debugger
}
else
{
FileStack.Dispatcher.Invoke(System.Windows.Threading.DispatcherPriority.Normal, new ADDFiLEHandel(ADDFiles), File);
}
然后我从新线程调用调用,我必须将线程状态设置为STA,我做错了什么我花了几个小时试图让它工作
public void createfilethread(object data)
{
FileControlxaml NewFile = new FileControlxaml();
NewFile.Title = "Hellow World";
ADDFiles(NewFile);
}
你不能这样做。在没有关联的
调度程序
的线程中实例化调度程序对象
时,将创建一个新的调度程序并将其关联到该线程。不能混合在不同线程中创建的不同UIElement
为什么要在第二个线程中创建UIElements?这就是“UI线程”的含义
重新考虑您的方法。FileStack是一个StackPanel控件