如何使用c#WPF调用服装控件并将其添加到控制子项中

wiusto 发布于 2019-02-11 c# 最后更新 2019-02-11 21:14 6 浏览

嗨,我有一个我为我的网站创建的程序,我试图更新它,这样代码的激烈部分将运行在一个单独的线程中。新线程创建了几个服装控件,我需要将它们放在容器内作为主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);
    }
已邀请:

baut

赞同来自:

你不可以做这个。在没有关联Dispatcher的线程中实例化DispatcherObject时,将创建一个新的调度程序并将其与该线程关联。您不能混合在不同线程中创建的不同UIElements。 为什么要在第二个线程中创建UIElements?那是“UI线程”的意思。 重新思考你的方法。