如何使用c#WPF调用coust控件并将其添加到控件子级

如何使用c#WPF调用coust控件并将其添加到控件子级,c#,wpf,invoke,dispatcher,C#,Wpf,Invoke,Dispatcher,嗨,我有一个我为我的网站创建的程序,我正在尝试更新它,以便代码的密集部分可以在单独的线程中运行。新线程创建了几个costure控件,我需要将这些控件作为主GUI线程上的子控件放置在容器中,但每次运行代码时,我都会遇到这样一个错误:“调用线程无法访问此对象,因为它属于另一个线程”。每次我运行代码并且程序试图调用控件时,抛出此错误后的调试器都会突出显示[if(FileStack.Dispatcher.CheckAccess())]下的代码部分。 这是我的密码 public delegate voi

嗨,我有一个我为我的网站创建的程序,我正在尝试更新它,以便代码的密集部分可以在单独的线程中运行。新线程创建了几个costure控件,我需要将这些控件作为主GUI线程上的子控件放置在容器中,但每次运行代码时,我都会遇到这样一个错误:“调用线程无法访问此对象,因为它属于另一个线程”。每次我运行代码并且程序试图调用控件时,抛出此错误后的调试器都会突出显示[if(FileStack.Dispatcher.CheckAccess())]下的代码部分。 这是我的密码

 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控件