嗨,我有一个为我的网站创建的程序,我试图对其进行更新,以便代码的密集部分将在单独的线程中运行。新线程创建了几个服装控件,我需要将它们作为主 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);
}